{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-07-27T14:57:22.193711Z",
     "start_time": "2024-07-27T14:57:21.112944Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import random\n",
    "import os\n",
    "import torch\n",
    "import torchvision as tv\n",
    "import matplotlib.pyplot as plt\n",
    "from torch.utils import data\n",
    "from torch.utils.data.dataset import TensorDataset\n",
    "from torch.utils.data.dataloader import DataLoader\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 工具函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_regression_dataset(train_num=7000, test_num=3000, feat_num=500):\n",
    "    \"\"\"\n",
    "    手动生成回归任务的数据集，要求：\n",
    "    \n",
    "    生成单个数据集，数据集的大小为10000且训练集大小为7000，测试集大小为3000。\n",
    "    \n",
    "    数据集的样本特征维度p为500\n",
    "    \"\"\"\n",
    "    x = torch.randn((train_num, feat_num))\n",
    "    y = (\n",
    "        0.028\n",
    "        + torch.sum(0.0056 * x)\n",
    "        + torch.normal(mean=0, std=0.01, size=(train_num, 1))\n",
    "    )\n",
    "    train_x = x[:test_num]\n",
    "    train_y = y[:test_num]\n",
    "    test_x = x[test_num:]\n",
    "    test_y = y[test_num:]\n",
    "    train_data = TensorDataset(train_x, train_y)\n",
    "    train_iter = DataLoader(train_data, batch_size=50, shuffle=True)\n",
    "    test_data = TensorDataset(test_x, test_y)\n",
    "    test_iter = DataLoader(test_data, batch_size=50, shuffle=False)\n",
    "    return train_iter, test_iter\n",
    "\n",
    "\n",
    "def make_classify_dataset(train_num=7000, test_num=3000, feat_num=200):\n",
    "    \"\"\"\n",
    "    共生成两个数据集。\n",
    "    \n",
    "    两个数据集的大小均为10000且训练集大小为7000，测试集大小为3000。\n",
    "    \n",
    "    两个数据集的样本特征x的维度均为200，且分别服从均值互为相反数且方差相同的正态分布。\n",
    "    \n",
    "    两个数据集的样本标签分别为0和1。\n",
    "    \"\"\"\n",
    "    x1 = torch.normal(size=(train_num + test_num, feat_num), mean=1, std=1)\n",
    "    y1 = torch.zeros(x1.shape[0], dtype=torch.float32)\n",
    "    x2 = torch.normal(size=(train_num + test_num, feat_num), mean=-1, std=1)\n",
    "    y2 = torch.ones(x2.shape[0], dtype=torch.float32)\n",
    "\n",
    "    train_x = torch.cat([x1[:train_num], x2[:train_num]], dim=0)\n",
    "    train_y = torch.cat([y1[:train_num], y2[:train_num]], dim=0)\n",
    "    train_data = TensorDataset(train_x, train_y)\n",
    "    train_iter = DataLoader(train_data, batch_size=50, shuffle=True)\n",
    "\n",
    "    test_x = torch.cat([x1[train_num:], x2[train_num:]], dim=0)\n",
    "    test_y = torch.cat([y1[train_num:], y2[train_num:]], dim=0)\n",
    "    test_data = TensorDataset(test_x, test_y)\n",
    "    test_iter = DataLoader(test_data, batch_size=50, shuffle=False)\n",
    "    # print(f\"Class distribution: {torch.bincount(train_y.long())}\")\n",
    "    return train_iter, test_iter\n",
    "\n",
    "def make_minist_dataset():\n",
    "    \"\"\"\n",
    "    该数据集包含60,000个用于训练的图像样本和10,000个用于测试的图像样本。\n",
    "    \n",
    "    图像是固定大小(28x28像素)，其值为0到1。为每个图像都被平展并转换为784(28 * 28)个特征的一维numpy数组。\n",
    "    \"\"\"    \n",
    "    train_data=tv.datasets.MNIST(root='./mnist_dataset',train=True,download=True,transform=tv.transforms.ToTensor())\n",
    "    test_data=tv.datasets.MNIST(root='./mnist_dataset',train=False,download=True,transform=tv.transforms.ToTensor())\n",
    "    train_iter=torch.utils.data.DataLoader(dataset=train_data,batch_size=32,shuffle=True,num_workers=0)\n",
    "    test_iter=torch.utils.data.DataLoader(dataset=test_data,batch_size=32,shuffle=False,num_workers=0)\n",
    "    return train_iter, test_iter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Forward_Net(torch.nn.Module):\n",
    "    \"\"\"\n",
    "    手动实现前馈神经网络解决回归问题\n",
    "    \"\"\"\n",
    "    def __init__(self, input_size, hidden_size, output_size):\n",
    "        super(Forward_Net, self).__init__()\n",
    "        self.w1 = torch.nn.Parameter(torch.randn(input_size, hidden_size))\n",
    "        self.b1 = torch.nn.Parameter(torch.randn(hidden_size))\n",
    "        self.w2 = torch.nn.Parameter(torch.randn(hidden_size, output_size))\n",
    "        self.b2 = torch.nn.Parameter(torch.randn(output_size))\n",
    "        torch.nn.init.xavier_normal_(self.w1)\n",
    "        torch.nn.init.constant_(self.b1, 0.1)\n",
    "        torch.nn.init.xavier_normal_(self.w2)\n",
    "        torch.nn.init.constant_(self.b2, 0.1)\n",
    "        self.params = [self.w1, self.b1, self.w2, self.b2]\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = torch.relu(torch.matmul(x, self.w1) + self.b1)\n",
    "        x = torch.matmul(x, self.w2) + self.b2\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sgd(params, lr, batch_size):\n",
    "    for param in params:\n",
    "        param.data -= lr * param.grad / batch_size\n",
    "        param.grad.data.zero_()\n",
    "        \n",
    "def calc_net_loss(net: Forward_Net, test_iter: DataLoader, loss_func: torch.nn.Module):\n",
    "    net.eval()\n",
    "    test_loss = 0\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_iter:\n",
    "            pred = net(x)\n",
    "            test_loss += loss_func(pred, y.unsqueeze(1)).item()\n",
    "    return test_loss / len(test_iter)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务一：手动实现前馈神经网络解决回归问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\jcheng\\.conda\\envs\\dl\\Lib\\site-packages\\torch\\nn\\modules\\loss.py:610: UserWarning: Using a target size (torch.Size([50, 1, 1])) that is different to the input size (torch.Size([50, 1])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n",
      "  return F.mse_loss(input, target, reduction=self.reduction)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1, Train Loss: 4.0063670138518015, Test Loss: 1.4538487203419208\n",
      "Epoch 2, Train Loss: 1.1433809647957485, Test Loss: 1.057636995613575\n",
      "Epoch 3, Train Loss: 0.98722851673762, Test Loss: 0.9919992193579674\n",
      "Epoch 4, Train Loss: 0.9274170905351639, Test Loss: 0.9475791096687317\n",
      "Epoch 5, Train Loss: 0.8755859096844991, Test Loss: 0.9059679809957742\n",
      "Epoch 6, Train Loss: 0.8280507365862528, Test Loss: 0.8680428542196751\n",
      "Epoch 7, Train Loss: 0.7849298506975174, Test Loss: 0.8334687758237124\n",
      "Epoch 8, Train Loss: 0.7449732234080633, Test Loss: 0.8010915078222751\n",
      "Epoch 9, Train Loss: 0.7082625528176626, Test Loss: 0.7714025199413299\n",
      "Epoch 10, Train Loss: 0.674373968442281, Test Loss: 0.7440731935203075\n",
      "Epoch 11, Train Loss: 0.6431467706958452, Test Loss: 0.7179868835955858\n",
      "Epoch 12, Train Loss: 0.614233993490537, Test Loss: 0.6937776222825051\n",
      "Epoch 13, Train Loss: 0.5872798879941304, Test Loss: 0.6711972843855619\n",
      "Epoch 14, Train Loss: 0.5623593444625536, Test Loss: 0.6506947457790375\n",
      "Epoch 15, Train Loss: 0.5393124024073283, Test Loss: 0.6313622675836086\n",
      "Epoch 16, Train Loss: 0.5176111857096354, Test Loss: 0.6122197739779949\n",
      "Epoch 17, Train Loss: 0.49731236348549523, Test Loss: 0.5945231925696135\n",
      "Epoch 18, Train Loss: 0.4784366046388944, Test Loss: 0.5782449319958687\n",
      "Epoch 19, Train Loss: 0.46065472761789955, Test Loss: 0.5628907401114702\n",
      "Epoch 20, Train Loss: 0.4441973594327768, Test Loss: 0.548237032443285\n",
      "Epoch 21, Train Loss: 0.4285591930150986, Test Loss: 0.5346363989636302\n",
      "Epoch 22, Train Loss: 0.4138671765724818, Test Loss: 0.5213832532986998\n",
      "Epoch 23, Train Loss: 0.4000778593122959, Test Loss: 0.5089858889579773\n",
      "Epoch 24, Train Loss: 0.3870239940782388, Test Loss: 0.4971818424761295\n",
      "Epoch 25, Train Loss: 0.3747878315548102, Test Loss: 0.4862001113593578\n",
      "Epoch 26, Train Loss: 0.36324089964230855, Test Loss: 0.475762876868248\n",
      "Epoch 27, Train Loss: 0.3522602605322997, Test Loss: 0.4652735508978367\n",
      "Epoch 28, Train Loss: 0.34181390206019086, Test Loss: 0.45560603588819504\n",
      "Epoch 29, Train Loss: 0.332146696994702, Test Loss: 0.44661105759441855\n",
      "Epoch 30, Train Loss: 0.32282861148317654, Test Loss: 0.43793799784034493\n",
      "Epoch 31, Train Loss: 0.31395385911067325, Test Loss: 0.4298587404191494\n",
      "Epoch 32, Train Loss: 0.3055582289894422, Test Loss: 0.4218186629936099\n",
      "Epoch 33, Train Loss: 0.29749734873572986, Test Loss: 0.41392986178398133\n",
      "Epoch 34, Train Loss: 0.2900799768666426, Test Loss: 0.4068257676437497\n",
      "Epoch 35, Train Loss: 0.2827620568374793, Test Loss: 0.39988351706415415\n",
      "Epoch 36, Train Loss: 0.27567962408065794, Test Loss: 0.393903692252934\n",
      "Epoch 37, Train Loss: 0.26924213096499444, Test Loss: 0.38720095474272964\n",
      "Epoch 38, Train Loss: 0.2629848433037599, Test Loss: 0.38066131342202425\n",
      "Epoch 39, Train Loss: 0.2569692264000575, Test Loss: 0.3749243959784508\n",
      "Epoch 40, Train Loss: 0.2512063324451447, Test Loss: 0.3691195474937558\n",
      "Epoch 41, Train Loss: 0.24576819638411204, Test Loss: 0.3637602968141437\n",
      "Epoch 42, Train Loss: 0.2404716139038404, Test Loss: 0.35823034662753345\n",
      "Epoch 43, Train Loss: 0.23540803914268812, Test Loss: 0.35321577116847036\n",
      "Epoch 44, Train Loss: 0.23063460464278857, Test Loss: 0.3485072011128068\n",
      "Epoch 45, Train Loss: 0.22598330999414126, Test Loss: 0.34369773901998996\n",
      "Epoch 46, Train Loss: 0.22152574248611928, Test Loss: 0.33921301234513523\n",
      "Epoch 47, Train Loss: 0.21726461127400398, Test Loss: 0.33480738643556834\n",
      "Epoch 48, Train Loss: 0.2130758081873258, Test Loss: 0.33047254104167223\n",
      "Epoch 49, Train Loss: 0.20913045754035314, Test Loss: 0.32641547583043573\n",
      "Epoch 50, Train Loss: 0.20530360316236815, Test Loss: 0.3223772171884775\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWyBJREFUeJzt3Qd4VFXeBvA3ZTLphRICSaihNwUBEQtIExDBLvitsGtZFXd1cXXtgg17WUXs4u6KqOyCBVCKAiJFQLqA9FASIEB6Mpkk8z3/c2cmM2mkzL0zmby/5znemTslNycx83JqgM1ms4GIiIjITwR6+wKIiIiIPInhhoiIiPwKww0RERH5FYYbIiIi8isMN0RERORXGG6IiIjIrzDcEBERkV9huCEiIiK/wnBDREREfoXhhoiIiPwKww0RVWv27NkICAjAxo0b0RBs2bIF//d//4fk5GSYzWY0adIEw4YNw8cff4ySkhJvXx4RGSDYiC9CRGSEDz74AHfeeSdatGiBP/zhD+jYsSNycnKwfPly3HrrrUhLS8Mjjzzi7cskIp0x3BCRX1i3bp0KNgMHDsSiRYsQFRXlfOy+++5TLU87duzwyNfKy8tDRESER96LiDyP3VJE5BGbN2/GqFGjEB0djcjISAwdOlQFDldWqxXTp09XLSqhoaFo2rQpLr74YixdutT5nPT0dPzxj39EUlKS6lZq2bIlxo0bh0OHDlX79eV9pfvs008/dQs2DhdccAEmT56sbq9YsUI9V46u5GvIeemKc5DXyPezf/9+jB49Wr33zTffjHvuuUedz8/Pr/C1JkyYgISEBLdusMWLF+OSSy5RoUjeY8yYMdi5c2eN6paIaofhhojqTT6k5YN769atePDBB/H444/j4MGDGDx4MNavX+983rRp01QIGTJkCN566y08+uijaN26NX799Vfnc6699lrMnz9fBZy3334bf/3rX1XXUmpqapVfXwKGdD1deuml6v08rbi4GCNHjkR8fDxefvlldY033nijasFZuHBhhWv55ptvcN111yEoKEid+/e//63CjIShF154QdXPb7/9poLduUIbEdWBjYioGh9//LFN/lRs2LChyueMHz/eFhISYtu/f7/z3PHjx21RUVG2Sy+91Hmud+/etjFjxlT5PmfPnlVf66WXXqrVNW7dulW97t57763R83/88Uf1fDm6OnjwoDov37PDpEmT1LmHHnrI7bmlpaW2xMRE27XXXut2/osvvlDPX7Vqlbqfk5Nji42Ntd1+++1uz0tPT7fFxMRUOE9E9ceWGyKqF+l6WbJkCcaPH4/27ds7z0t30sSJE7F69WpkZ2erc7GxsaqVZ+/evZW+V1hYGEJCQlR30dmzZ2t8DY73r6w7ylPuuusut/vSfXX99der8T25ubnO859//jkSExNVq4yQLrfMzEzVVZWRkeEs0qozYMAA/Pjjj7pdM1FjxXBDRPVy6tQp1RXTuXPnCo917doVpaWlOHLkiLr/1FNPqQ/6Tp06oWfPnnjggQewbds25/NljI1028j4FJnxJN1ML774ohqHUx0Z5yOk+0oPwcHBagxQedI1VVBQgK+//lrdl5AjYUdCj4Qf4Qhyl19+OZo3b+5WJBSePHlSl2smaswYbojIMBJWZGDuRx99hB49eqip23369FFH15lNv//+O2bMmKEGHcv4FAlJMmC5KikpKSqAbN++vUbX4Qge5VW1Do6ErsDAin8uL7zwQrRt2xZffPGFui9jbSTsSOhxkHDnGHcjrTjly1dffVWjayaimmO4IaJ6kRaI8PBw7Nmzp8Jju3fvVqFAFtRzkEX1ZLDwZ599plp0evXqpQYau+rQoQPuv/9+1bIh07eLiorwyiuvVHkN8vWlZWTVqlXOVqLqxMXFqaO0Irk6fPgwauuGG27Ad999p7rGpEtKwo6EHtfvRchgZFlMsHyRQddE5FkMN0RULzJ2ZMSIEaoFwnXmz4kTJzBnzhw19sTRbXT69Gm318rsIWl1sVgs6r50bxUWFro9R8KBjKVxPKcqTz75pEyQUIv3uY6Bcdi0aRM++eQTdbtNmzbquiUMuZLZWbUlrTRybfLeEnIk7LiSWVby/T/33HNqKnxl3XpE5FlcxI+IakS6kuTDu7x7770XzzzzjOpikSBz9913qy6id999V33oy5gZh27duqmWir59+6oWHFlYb968eWrNGCHdUbI+jgQEea68j0wLl6B00003VXt9F110EWbOnKm+fpcuXdxWKJYByjIuRq5TxMTEqHExb775puqikgD17bff1mn8i3SrSUCTae3y/bp2SQkJNrNmzVLXI8+V70Nau2Rqu0wjHzRokJoWT0Qe5IEZV0TUCKaCV1WOHDminvfrr7/aRo4caYuMjLSFh4fbhgwZYluzZo3bez3zzDO2/v37q6nRYWFhti5dutieffZZW1FRkXo8IyPDNmXKFHU+IiJCTZUeMGCAml5dU5s2bbJNnDjR1qpVK5vJZLLFxcXZhg4davvkk09sJSUlzuedOnVKTeOWa5Xn/PnPf7bt2LGj0qngci3VefTRR9XrUlJSqnyOTDuX+pHvKTQ01NahQwfb5MmTbRs3bqzx90ZENRMg//FkWCIiIiLyJo65ISIiIr/CcENERER+heGGiIiI/ArDDREREfkVhhsiIiLyKww3RERE5Fca3SJ+ss/L8ePH1YqnVe0vQ0RERL5FVq6RRTlbtWpV6V5vjTrcSLBx3eeGiIiIGg7ZPy4pKana5zS6cCMtNo7Kcex34ymyb4xs9Cf77JhMJo++N1XE+jYW69tYrG9jsb59v75lc1ppnHB8jlen0YUbR1eUBBs9wo3sTizvy/859Mf6Nhbr21isb2OxvhtOfddkSAkHFBMREZFfYbghIiIiv8JwQ0RERH6l0Y25ISIi/1JSUqLGcNSHvD44OBiFhYXq/UhfVdV3SEjIOad51wTDDRERNdh1T9LT05GZmemR90pISFAzabkGmv6qqm8JNu3atVMhpz4YboiIqEFyBJv4+Hg186Y+oUQWeM3NzUVkZKRHWg6o9vXtWGQ3LS0NrVu3rtfPk+GGiIgaHOnKcASbpk2b1vv95IO1qKgIoaGhDDcGqKq+mzdvrgJOcXFxvabk8ydIREQNjmOMjbTYkP8IsXdH1XfcE8MNERE1WBwf418CPPTzZLghIiIiv+Iz4eb5559Xie2+++6r9nlffvklunTpovrpevbsiUWLFhl2jURERL6obdu2eP311719GT7DJ8LNhg0b8O6776JXr17VPm/NmjWYMGECbr31VmzevBnjx49XZceOHYZdKxERUV3JP+KrK9OmTavz5+gdd9xRr2sbPHjwORsYGgqvhxuZCnbzzTfj/fffR1xcXLXPfeONN3DFFVfggQceQNeuXfH000+jT58+eOutt+BtRcWlSMsqxBmLt6+EiIh8lUxzdhRpaZGNI13P/f3vf3dbC0ZmDdWEzDLi4Gofmgo+ZcoUjBkzBsOGDcMzzzxT7XPXrl2LqVOnup0bOXIkFixYUOVrLBaLKq5bpjtG2td3RUtXmw6fxYQPNqB5aBBuvNJz70tVc/z8PPlzpKqxvo3F+q6e1It8+MuUYin1Je/lOHri/aoiU9cdoqKiVGuN49yKFSswdOhQfPvtt3jiiSewfft2fPfdd0hOTsb999+P9evXIy8vT/3j/tlnn1Wfmw7t27fHvffeq4oICgpSPSIydGPJkiVITEzESy+9hKuuugrVqe77/+9//6talvbt24eWLVvinnvucftMnjVrlgpssjBfTEwMLr74YjWURMybN081SMhrJYSdd955+Ne//qXqwPXryW25Bvn5yvfgqjb/L3g13MydOxe//vqrak6r6YJNLVq0cDsn9+V8VWbMmIHp06dXOC8/bE+m3CO58t9gWEuBpUuXeux96dxY38ZifRuL9V05WbpfVriV1n9ZL0XIh2Kh/BGuh4LTdVvtONQUWOuZPrL1gFyz4x/d+fn56viPf/xDBQEZRxMbG4ujR49iyJAheOihh2A2m9Vn57hx4/DLL7+o4OMIBfJ+jvcS8tknRYLSe++9hz/84Q/Ytm1blb0k0kokden6Hg5btmzBTTfdpK7h6quvVl9bWpnkc3TixIlqqIgEq3feeQf9+/dXaxBJg4S8l3xGSw+NXMuVV16JnJwc9Zh873LblXz9goICrFq1qkKrlaN+fDrcSLKTipD/cWVwsF4efvhht2QpFS2/DCNGjFDNgZ6y92QuXt6+BkWlwPDhw+u1+BDVjKR4+f1hfRuD9W0s1nf15INcPkdkhVvHZ0h+UTHOf8E7YXDHtOEID6ndR6pctwQix2eR4x/cEmwkvDi0adMGgwYNct4///zzsXjxYtXSI70fQhbCk/dz/Vz74x//iD/96U/qtrTaSEvOrl271PCOqgKjrDNT2WejhKPLL79cXZuQISEHDx7EzJkzceedd+L06dOIiIjA9ddfr1pjhLTcCGmtkaAiY2blexEXXnihCjaO1ivXn2tYWBguvfTSCtmgstDlc+Fm06ZNOHnypKogB1m0R9KajKGRrqTyTVKS0k+cOOF2Tu7L+apIypVSnvyx8OQfjKgw7WvIPxo8/d5UPda3sVjfxmJ9V04+L+RDUT7UHSvcenNlYdfrqM1rKjtKy4fre0nrlHQHLVy4UI3LkaAgrRsS7lyf56gPh969ezvvS4iQ0JKRkVHtdZZ/D4fdu3erwOX6mIQXGQsrLTAyRESCS0pKigpPUqSFRwKbhDHpbpPrkedJ48I111yjPuPLfz25Lecq+72vzf8HXgs38o1Kf6IrSZkyzVua5MoHGzFw4EAsX77cbTS3/MtGzntbqEm7XmtpgLPvloiIjBNmCsJvT42s02ulWycnOwdR0VF1CknytT1FWkBcSfePfNa9/PLLKjxIy8Z1113n7I6riqlcGJDQoNd4IglPMsxEWpNk2Id0hUkgk2En0rUm1y8znuWxN998E48++qg6J0u66MFr4UYqokePHhV+oLJHiOP8LbfcogZBybgZId1Yl112GV555RU1CFn6HTdu3Kiay7xN+ltdZ07Vc0NTIiKqJfnwrm3XkIN86BeHBKnX+9reUj///DMmT56sWkIcLTmHDh0y9Bq6du2qrqP8dXXq1MnZGCHdWjLIWcqTTz6pQs0PP/ygWmnkZyNda1Ik+Egrjwyc9rtwUxOpqaluv2QXXXQR5syZg8ceewyPPPIIOnbsqGZKlQ9J3my5EQXWUkR69WqIiMhfyGfd//73P4wdO1aFhMcff1y3FphTp06pwcOuZGaUzNbq16+fGnNz4403qgHBMoTk7bffVs+RoHLgwAE1VkYGLMssLbnGzp07q1le0usi3VEyM0zuy9eRYKQXnwo30pxV3X0hg5Wk+BpTUCCCAwNQXGpDYXH9NvwiIiJyePXVV9XAYPkHfrNmzdTQjdoMrq0NaUCQ4koCjTQqfPHFF6rVRe5L4HnqqadUi5KQVhoJYNIVJYOCJZB99tln6N69uxrELONpZZq4XLe02kgXmwyWbxThpqEzmwJRbCmBpZ5TEYmIyP9JMHCEA8cKwZWN2ZQp4dK948oxS8qhfDeVrZL3kenZ1amsQcHVtddeq0plZHBxVa+XLi1Zr8eVtOroFdCEb3UsNnChwVrXVIGVLTdERETewnDjQWH2QcWFDDdERERew3DjQWb7oGJLMbuliIiIvIXhRofp4OyWIiIi8h6GGw9yLOJU371NiIiIqO4YbjzIbB9QbGHLDRERkdcw3OjSLcWWGyIiIm9huNFhKjgX8SMiIvIehhsPCg3RqpOL+BEREXkPw40eLTccc0NEROQ1DDcexKngRERUHdn4sroiezPV571lM2lPPa8h495SOuwMzkX8iIioMmlpac7bn3/+udqIcs+ePc5zkZGRXroy/8KWGw8KDXZsv8BwQ0REFSUkJDhLTEyMakVxPTd37ly10WRoaCi6dOmCt99+2/naoqIi3HPPPWpHbnlcdteeMWOGc3NNcfXVV6v3dNyvLdnQUnb7TkpKgtlsxnnnnee26WV11yCbdUrLU+vWrdVrW7Vqhb/+9a/wBrbc6LD9AruliIi8QHbCtubX7bWlpdpri4KAwDr8u98ULv09qI9PP/1UteS89dZbOP/887F582bcfvvtiIiIwKRJk/DPf/4TX3/9Nb744gsVII4cOaKK2LBhA+Lj4/Hxxx/jiiuuQFCQ9nlUW2+88QZeeeUVvPvuu+oaPvroI1x11VXYuXMnOnbsWO01/Pe//8Vrr72mAlr37t2Rnp6OrVu3whsYbnRYoZiL+BEReYGEk+da1emlEmdi6/O1HzkOhETU5x3w5JNPqmBxzTXXqPvt2rXDb7/9poKGhJvU1FQVMC6++GLVOiOtJg7NmzdXx9jYWNUCVFcvv/wy/vGPf+Cmm25S91944QX8+OOPeP311zFz5sxqr0Eek689bNgwmEwmFX769+8Pb2C3lA4Digs55oaIiGohLy8P+/fvx6233qrG3TjKM888o86LyZMnY8uWLejcubPq7lmyZIlHryE7OxvHjx/HoEGD3M7L/V27dp3zGq6//noUFBSgffv2qsVp/vz5KC4uhjew5caDzM4xN2y5ISIynHQNSQtKHceaZOfkIDoqCoF17Zaqh9zcXHV8//33MWDAALfHHF1Mffr0wcGDB7F48WIsW7YMN9xwg2olmTdvHozSp5prSE5OVoOj5fzSpUtx991346WXXsLKlStVS46RGG48KCyEG2cSEXmNjHmpa9eQjLkxlWivr0u4qacWLVqoAbgHDhzAzTffXOXzoqOjceONN6py3XXXqfE1Z86cQZMmTVSAKCmp+z+u5b3lGn7++WdcdtllzvNy37V7qbprCAsLw9ixY1WZMmWKGhS9fft2FYqMxHDjQVzEj4iI6mr69Omqq0dmUUlgsFgs2LhxI86ePYupU6fi1VdfVbOUZKCvtC59+eWXaoyLjLMRMkNq+fLlqhtJZivFxcVV+bWk9UW6l1zJWJoHHnhAjf3p0KGDmiklA5TleTLYWVR3DbNnz1bhSlqewsPD8Z///EeFHddxOUZhuPEgs2PMDcMNERHV0m233aZCgXTlSMiQWVI9e/bEfffdpx6PiorCiy++iL1796quqn79+mHRokXObjQZjCwh6P3330diYiIOHTpU5deS55X3008/qXCVlZWF+++/HydPnkS3bt3U7CgJPue6Bgk4zz//vHpvCTly7d988w2aNm0KowXYZGJ6IyIDpiQVyw9PmtY8aVvqGVz19lo0iwzBxseGe/S9qSKr1ar+pxo9erTh/bmNEevbWKzv6hUWFqrWB5lRJOut1Jcac5OdrT4X6jTmhjxS39X9XGvz+c2foAeF2TfO5JgbIiIi72G48SCzfcyNpZjdUkRERN7CcKPDOjfWEhuKS9h6Q0RE5A0MNzqsUCy4kB8REZF3MNzosIif4IwpIiL9NbI5MX7P5qGfJ8ONB8k+G6YA7QdTUMRwQ0SkF8cMsvz8Om6UST5Jdh0Xdd3404Hr3HiY9ExZizmomIhIT/LhJ+uqyFosQtaHkX9g1mdqsnywylRkTgXXX2X1LedOnTqlfpbBwfWLJww3HmYfU8zp4EREOnPsfu0IOPXtDpFNH2VF3fqEJKpffUvQkd3E6/szYLjRKdwUcMwNEZGu5ANQtgKIj49Xix7Wh7x+1apVuPTSS7loogGqqu+QkBCPtJwx3HiYfR0/DigmIjKwi6q+YzTk9cXFxWpVXIYb/eld3+xY9DB2SxEREXmXV8PNrFmz0KtXL7VHhJSBAwdi8eLFVT5fdhyVZkjX4ok9RTzJFKjNlmLLDRERkXd4tVsqKSlJ7SAqu43K4KJPPvkE48aNw+bNm9G9e/dKXyMhaM+ePc77vjbwi2NuiIiIGnG4GTt2rNv9Z599VrXmrFu3rspwI2HGMULel8fcWBhuiIiIvMJnxtyUlJRg7ty5yMvLU91TVcnNzUWbNm2QnJysWnl27twJX8IxN0RERN7l9dlS27dvV2FGFvKJjIzE/Pnz0a1bt0qf27lzZ3z00UdqnE5WVhZefvllXHTRRSrgSBdXZSwWiyoO2dnZzmlo9Z06WJ68nyPc5BYWefz9yZ2jflnPxmB9G4v1bSzWt+/Xd22eG2Dz8sYcskJhamqqCivz5s3DBx98gJUrV1YZcMp/o127dsWECRPw9NNPV/qcadOmYfr06RXOz5kzR62C6Gn/OxiIlemBGJZYirGt2XpDRETkCbLVxsSJE1VekPG3Ph1uyhs2bBg6dOiAd999t0bPv/7669UyzZ999lmNW26kSysjI+OclVNbErb++sFyLDseiMkDW+PR0V08+v5Usb6XLl2K4cOHc10KA7C+jcX6Nhbr2/frWz6/mzVrVqNw4/VuqfJkbwnXMHKucTrSrTV69Ogqn2M2m1UpTypTj19gx1RwS0nZxm6kL71+llQ51rexWN/GYn37bn3X5ufi1XDz8MMPY9SoUWofiZycHNVVtGLFCnz//ffq8VtuuQWJiYmYMWOGuv/UU0/hwgsvREpKCjIzM/HSSy/h8OHDuO222+ArQuyLZHK2FBERkXd4NdzIZmcSYNLS0hATE6MGCkuwkWYqIWNxXPeYOHv2LG6//Xakp6cjLi4Offv2xZo1a2o0Psfw2VLcFZyIiKjxhZsPP/yw2selFcfVa6+9poovcy7iV8RwQ0RE1KjXufG/jTM5U4qIiMgbGG48jN1SRERE3sVw42FcoZiIiMi7GG48jLuCExEReRfDjW5jbhhuiIiIvIHhRrduKYYbIiIib2C40WsqOMMNERGRVzDc6Dig2Me27SIiImoUGG50GnMjLMWcMUVERGQ0hhudWm4Ex90QEREZj+HGw4ICgeDAAHWba90QEREZj+FGB2Z78w1bboiIiIzHcKOD0OAgdeSMKSIiIuMx3OgglC03REREXsNwo4NQk9ZywzE3RERExmO40bPlhjuDExERGY7hRscxN4VFDDdERERGY7jRs1uKLTdERESGY7jRdUAxx9wQEREZjeFGz6ng7JYiIiIyHMONDkLtG0yxW4qIiMh4DDd6DihmtxQREZHhGG50wEX8iIiIvIfhRtdF/BhuiIiIjMZwo4PQYLbcEBEReQvDjQ7M3H6BiIjIaxhudBxzw13BiYiIjMdwo4MwjrkhIiLyGoYbHZjtY24s7JYiIiIyHMONjrOl2C1FRERkPIYbHbBbioiIyHsYbnRgdizix+0XiIiIDMdwo+vGmRxzQ0REZDSGGx2E2TfOtLBbioiIqHGFm1mzZqFXr16Ijo5WZeDAgVi8eHG1r/nyyy/RpUsXhIaGomfPnli0aBF8jdmxcSa7pYiIiBpXuElKSsLzzz+PTZs2YePGjbj88ssxbtw47Ny5s9Lnr1mzBhMmTMCtt96KzZs3Y/z48ars2LEDvriIn7XEhuISdk0RERE1mnAzduxYjB49Gh07dkSnTp3w7LPPIjIyEuvWrav0+W+88QauuOIKPPDAA+jatSuefvpp9OnTB2+99RZ8cbaUKCxmuCEiIjJSMHxESUmJ6nLKy8tT3VOVWbt2LaZOnep2buTIkViwYEGV72uxWFRxyM7OVker1aqKJzneL9BW1h2Vm18Ic6DZo1+H3Ovb0z9Hqhzr21isb2Oxvn2/vmvzXK+Hm+3bt6swU1hYqFpt5s+fj27dulX63PT0dLRo0cLtnNyX81WZMWMGpk+fXuH8kiVLEB4eDj0sW7YMpoAgWG0BWLx0OZow2+hq6dKl3r6ERoX1bSzWt7FY375b3/n5+Q0n3HTu3BlbtmxBVlYW5s2bh0mTJmHlypVVBpzaevjhh91ae6TlJjk5GSNGjFCDmD1JUqX8oIYPH47wLT8hq6AYFw66FCnxkR79OlSxvk0mk7cvx++xvo3F+jYW69v369vR89Igwk1ISAhSUlLU7b59+2LDhg1qbM27775b4bkJCQk4ceKE2zm5L+erYjabVSlPKlOvX2B53zBTsAo3JQjk/yg60/NnSRWxvo3F+jYW69t367s2PxefW+emtLTUbYyMK+m+Wr58uds5SX5VjdHxhRlT3IKBiIjIWF5tuZEuo1GjRqF169bIycnBnDlzsGLFCnz//ffq8VtuuQWJiYlq3Iy49957cdlll+GVV17BmDFjMHfuXDWF/L333oOv4eaZREREjTDcnDx5UgWYtLQ0xMTEqAX9JNhIH5xITU1FYGBZ49JFF12kAtBjjz2GRx55RE0hl5lSPXr0gK+Gm0Irp4ITERE1mnDz4YcfVvu4tOKUd/3116vi69gtRURE5B0+N+bGX7BbioiIyDsYbnRepZibZxIRERmL4UYnHHNDRETkHQw3Oo+5YbcUERGRsRhudG+5YbghIiIyEsONTtgtRURE5B0MNzoJDbaHm2K23BARERmJ4UbvdW6KGG6IiIiMxHCjk7AQttwQERF5A8ON3t1SHHNDRERkKIYbnZgdU8HZLUVERGQohhudVyhmtxQREZGxGG50wqngRERE3sFwoxMu4kdEROQdDDd6d0sx3BARERmK4UbvdW4YboiIiAzFcKMTjrkhIiLyDoYbncON7Apus9m8fTlERESNBsONzt1SwlLM1hsiIiKjMNzo3HIjLOyaIiIiMgzDjU5MQYEICgxwdk0RERGRMRhudMTp4ERERMZjuDFiOji3YCAiIjIMw42OzPadwbl5JhERkXEYbnQUFsK1boiIiIzGcKMjdksREREZj+FGR6H2bqlCdksREREZhuHGiG4pttwQEREZhuHGgAHFHHNDRERkHIYbHXFncCIiIuMx3BiwiB9XKCYiIjIOw40B+0uxW4qIiMg4DDcGdEtZ2HJDRETUOMLNjBkz0K9fP0RFRSE+Ph7jx4/Hnj17qn3N7NmzERAQ4FZCQ0Phyy037JYiIiJqJOFm5cqVmDJlCtatW4elS5fCarVixIgRyMvLq/Z10dHRSEtLc5bDhw/Dt7ulGG6IiIiMEgwv+u677yq0ykgLzqZNm3DppZdW+TpprUlISICv45gbIiKiRhZuysvKylLHJk2aVPu83NxctGnTBqWlpejTpw+ee+45dO/evdLnWiwWVRyys7PVUVqJpHiS4/0cR1OgTR3zLZ7/WlSxvklfrG9jsb6Nxfr2/fquzXMDbDab9gnsZRJUrrrqKmRmZmL16tVVPm/t2rXYu3cvevXqpcLQyy+/jFWrVmHnzp1ISkqq8Pxp06Zh+vTpFc7PmTMH4eHh0NOGUwH4z74gdIkpxV3d2HpDRERUV/n5+Zg4caL67JfhKQ0i3Nx1111YvHixCjaVhZTqklzXrl0xYcIEPP300zVquUlOTkZGRsY5K6e25Fpk7NDw4cNhMpmweEc6/vr5NlzQJhaf3dbfo1+LKtY36Yv1bSzWt7FY375f3/L53axZsxqFG5/olrrnnnvw7bffqhaY2gQbIZVy/vnnY9++fZU+bjabVansdXr9AjveOzIsRN23FNv4P4uO9PxZUkWsb2Oxvo3F+vbd+q7Nz8Wrs6Wk0UiCzfz58/HDDz+gXbt2tX6PkpISbN++HS1btoSv4WwpIiIi43m15UamgcvYl6+++kqtdZOenq7Ox8TEICwsTN2+5ZZbkJiYqNbEEU899RQuvPBCpKSkqPE5L730kpoKftttt8Fnww13BSciImoc4WbWrFnqOHjwYLfzH3/8MSZPnqxup6amIjCwrIHp7NmzuP3221UQiouLQ9++fbFmzRp069YNviaUu4ITERE1rnBTk7HMK1ascLv/2muvqdKgdgUvYssNERGRUbi3lI7CQtgtRUREZDSGGwO6pawlNhSXsGuKiIjICAw3BgwoFoXFDDdERERGYLjRkTm4rHo5HZyIiMgYDDc6CgwMcAYchhsiIiJjMNzojAv5ERERGYvhRmdhznDDMTdERERGYLgxaq0bttwQEREZguHGsG4pttwQEREZgeHGoHBTwJYbIiIiQzDc6IzdUkRERMZiuNEZZ0sREREZi+HGsJ3BGW6IiIiMwHBj1OaZHFBMRERkCIYbnXHMDRERkbEYbnRmtndLcbYUERGRD4ebI0eO4OjRo877v/zyC+677z689957nrw2v8BuKSIiogYQbiZOnIgff/xR3U5PT8fw4cNVwHn00Ufx1FNPefoa/WNAcTFbboiIiHw23OzYsQP9+/dXt7/44gv06NEDa9aswaefforZs2d7+hr9Y8xNEcMNERGRz4Ybq9UKs9msbi9btgxXXXWVut2lSxekpaV59gr9pVuKLTdERES+G266d++Od955Bz/99BOWLl2KK664Qp0/fvw4mjZt6ulr9JN1bjjmhoiIyGfDzQsvvIB3330XgwcPxoQJE9C7d291/uuvv3Z2V5HGzKngREREhgquy4sk1GRkZCA7OxtxcXHO83fccQfCw8M9eX0NXhg3ziQiIvL9lpuCggJYLBZnsDl8+DBef/117NmzB/Hx8Z6+Rj/ZW4rdUkRERD4bbsaNG4d//etf6nZmZiYGDBiAV155BePHj8esWbM8fY1+EW4sbLkhIiLy3XDz66+/4pJLLlG3582bhxYtWqjWGwk8//znPz19jX4xFZzdUkRERD4cbvLz8xEVFaVuL1myBNdccw0CAwNx4YUXqpBDFcfccEAxERGRD4eblJQULFiwQG3D8P3332PEiBHq/MmTJxEdHe3pa2zQOOaGiIioAYSbJ554An//+9/Rtm1bNfV74MCBzlac888/39PX6BdTwaVbymazeftyiIiI/F6dpoJfd911uPjii9VqxI41bsTQoUNx9dVXe/L6/KZbSliKS50tOURERORD4UYkJCSo4tgdPCkpiQv4VcI1zFisDDdEREQ+2S1VWlqqdv+OiYlBmzZtVImNjcXTTz+tHqMypqBABAUGqNucMUVEROSjLTePPvooPvzwQzz//PMYNGiQOrd69WpMmzYNhYWFePbZZz19nQ2+ayrXUswZU0RERL7acvPJJ5/ggw8+wF133YVevXqpcvfdd+P999/H7Nmza/w+M2bMQL9+/dS0clnZWBYBlFWOz+XLL79UO5CHhoaiZ8+eWLRoERrCWjfcGZyIiMhHw82ZM2dUuChPzsljNbVy5UpMmTIF69atU7uLW61WNa08Ly+vytesWbNGbdZ56623YvPmzSoQSdmxYwd8lZk7gxMREfl2uJEZUm+99VaF83JOWnFq6rvvvsPkyZPRvXt39Z7S6pOamopNmzZV+Zo33ngDV1xxBR544AF07dpVjfPp06dPpdfjK8JC7JtnFrHlhoiIyCfH3Lz44osYM2YMli1b5lzjZu3atWpRv/p0EWVlZaljkyZNqnyOfJ2pU6e6nRs5cqRaVLAyssGnFAfZyVxIK5EUT3K8X/n3NQdrA4rzCi0e/5qNWVX1TfpgfRuL9W0s1rfv13dtnluncHPZZZfh999/x8yZM7F79251TrZguOOOO/DMM884952qDZlldd9996kByj169Kjyeenp6WovK1dyX85XNa5n+vTpFc7LgoPh4eHQg3SxucrPkZabAKxZvxF5+7iQn971TfpifRuL9W0s1rfv1rds/aT7OjetWrWqMCtq69atahbVe++9V+v3k7E3Mm5GZl150sMPP+zW0iMtN8nJyWpsj6e3ipBUKT+o4cOHw2QyOc9/fnIjDuacQbeevTH6vFYe/ZqNWVX1TfpgfRuL9W0s1rfv17ej50XXcONJ99xzD7799lusWrVKLQZYHVk48MSJE27n5L6cr4zZbFalPKlMvX6By793eIh222oL4P80OtDzZ0kVsb6Nxfo2Fuvbd+u7Nj+XOg0o9hTZa0mCzfz58/HDDz+gXbt253yNjPFZvny52zlJf46xPz49FZzr3BAREenOqy030hU1Z84cfPXVV2qtG8e4GVn5OCwsTN2+5ZZbkJiYqMbOiHvvvVeN+XnllVfUoOa5c+di48aNdeoKM4pjywWuUExERORj4UYGDVcnMzOzVl981qxZ6jh48GC38x9//LGaIi5kanhgYFkD00UXXaQC0WOPPYZHHnkEHTt2VDOlqhuE7CubZ3KdGyIiIh8LN9Kicq7HpaWlNt1S57JixYoK566//npVGgpHt5SFLTdERES+FW6kRYXq3i3FMTdERET68+qA4saCY26IiIiMw3BjaMsNx9wQERHpjeHGAJwKTkREZByGGwNnS7FbioiISH8MNwZ2S1nYLUVERKQ7hhsju6WK2XJDRESkN4YbA4QG27ulihhuiIiI9MZwY4DQEPtsKbbcEBER6Y7hxsCWG04FJyIi0h/DjZFjbtgtRUREpDuGGwOEsVuKiIjIMAw3BnZLWUtsKCk992ahREREVHcMNwaucyO4SjEREZG+GG4MYA4uq2auUkxE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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "batch_size = 50\n",
    "lr = 0.01\n",
    "loss_func = torch.nn.MSELoss()\n",
    "epoch_num = 50\n",
    "\n",
    "train_iter, test_iter = make_regression_dataset()\n",
    "net = Forward_Net(500, 256, 1)\n",
    "\n",
    "train_loss, test_loss = [], []\n",
    "for epoch in range(epoch_num):\n",
    "    train_loss_epoch = 0\n",
    "    for x, y in train_iter:\n",
    "        pred = net(x)\n",
    "        loss = loss_func(pred, y.unsqueeze(1))\n",
    "        loss.backward()\n",
    "        sgd(net.params, lr, batch_size)\n",
    "        train_loss_epoch += loss.item()\n",
    "    train_loss.append(train_loss_epoch / len(train_iter))\n",
    "    test_loss.append(calc_net_loss(net, test_iter, loss_func))\n",
    "    print(f\"Epoch {epoch+1}, Train Loss: {train_loss[-1]}, Test Loss: {test_loss[-1]}\")\n",
    "\n",
    "plt.plot(train_loss, label='Train Loss')\n",
    "plt.plot(test_loss, label='Test Loss')\n",
    "plt.legend()\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Loss Curve')\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- 实验结果分析：通过模型训练，随着epoch增加，训练集的loss逐渐降低，同时测试集的loss也逐渐降低，表明模型在回归任务中学习的参数逐渐趋于优 -->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务二：手动实现前馈神经网络解决二分类问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calc_net_acc(net: Forward_Net, test_iter: DataLoader):\n",
    "    net.eval()\n",
    "    correct_predictions = 0\n",
    "    total_samples = 0\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_iter:\n",
    "            pred = net(x)\n",
    "            predicted_labels = (torch.sigmoid(pred) > 0.5).squeeze(1).long()\n",
    "            correct_predictions += (predicted_labels == y.long()).sum().item()\n",
    "            total_samples += y.size(0)\n",
    "    return correct_predictions / total_samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1, Train Loss: 0.21788941659033298, Test Loss: 0.20713761541992426, Test Acc: 0.9418333333333333\n",
      "Epoch 2, Train Loss: 0.19647896949734006, Test Loss: 0.18747605032597978, Test Acc: 0.9541666666666667\n",
      "Epoch 3, Train Loss: 0.1783846340807421, Test Loss: 0.1707829337567091, Test Acc: 0.965\n",
      "Epoch 4, Train Loss: 0.16296090685895512, Test Loss: 0.1564984195244809, Test Acc: 0.9748333333333333\n",
      "Epoch 5, Train Loss: 0.14970823675394057, Test Loss: 0.1441799578567346, Test Acc: 0.9793333333333333\n",
      "Epoch 6, Train Loss: 0.1382336071293269, Test Loss: 0.1334715227596462, Test Acc: 0.9826666666666667\n",
      "Epoch 7, Train Loss: 0.1282297805483852, Test Loss: 0.12409965178618829, Test Acc: 0.9853333333333333\n",
      "Epoch 8, Train Loss: 0.11944822333753109, Test Loss: 0.11584607892048855, Test Acc: 0.9883333333333333\n",
      "Epoch 9, Train Loss: 0.11169492934963533, Test Loss: 0.10853820831204454, Test Acc: 0.9903333333333333\n",
      "Epoch 10, Train Loss: 0.10481033846735954, Test Loss: 0.10202991858435174, Test Acc: 0.9921666666666666\n",
      "Epoch 11, Train Loss: 0.09866097985899874, Test Loss: 0.09620245654756825, Test Acc: 0.9935\n",
      "Epoch 12, Train Loss: 0.09314362730032631, Test Loss: 0.09096125611104071, Test Acc: 0.9955\n",
      "Epoch 13, Train Loss: 0.08817125706534301, Test Loss: 0.08622620170935988, Test Acc: 0.996\n",
      "Epoch 14, Train Loss: 0.08366987734500851, Test Loss: 0.0819302975355337, Test Acc: 0.9963333333333333\n",
      "Epoch 15, Train Loss: 0.07957870590367487, Test Loss: 0.0780176205560565, Test Acc: 0.9971666666666666\n",
      "Epoch 16, Train Loss: 0.07584710412525705, Test Loss: 0.07444026086789866, Test Acc: 0.9978333333333333\n",
      "Epoch 17, Train Loss: 0.07243113596258419, Test Loss: 0.07116060309732954, Test Acc: 0.9978333333333333\n",
      "Epoch 18, Train Loss: 0.0692938187558736, Test Loss: 0.06814337021981677, Test Acc: 0.9981666666666666\n",
      "Epoch 19, Train Loss: 0.06640266313084535, Test Loss: 0.06535965000900129, Test Acc: 0.9985\n",
      "Epoch 20, Train Loss: 0.06373118638460125, Test Loss: 0.06278378750818471, Test Acc: 0.9988333333333334\n",
      "Epoch 21, Train Loss: 0.061256404859679085, Test Loss: 0.060394386590148015, Test Acc: 0.9988333333333334\n",
      "Epoch 22, Train Loss: 0.05895807676549469, Test Loss: 0.05817292984575033, Test Acc: 0.9988333333333334\n",
      "Epoch 23, Train Loss: 0.056819422370088954, Test Loss: 0.05610237545333803, Test Acc: 0.9993333333333333\n",
      "Epoch 24, Train Loss: 0.054823842558211516, Test Loss: 0.05416873989937206, Test Acc: 0.9993333333333333\n",
      "Epoch 25, Train Loss: 0.05295804335868785, Test Loss: 0.05235930454606811, Test Acc: 0.9993333333333333\n",
      "Epoch 26, Train Loss: 0.05121034267358482, Test Loss: 0.0506627981706212, Test Acc: 0.9993333333333333\n",
      "Epoch 27, Train Loss: 0.04957008107033159, Test Loss: 0.04906890415586531, Test Acc: 0.9993333333333333\n",
      "Epoch 28, Train Loss: 0.048027902262817536, Test Loss: 0.04756841616084178, Test Acc: 0.9995\n",
      "Epoch 29, Train Loss: 0.046575365987207205, Test Loss: 0.046154010792573294, Test Acc: 0.9995\n",
      "Epoch 30, Train Loss: 0.04520504943627332, Test Loss: 0.04481840798010429, Test Acc: 0.9996666666666667\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAHHCAYAAABEEKc/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcr9JREFUeJzt3Qdc1OUfB/APGxEBBUFQQHFPVNx75cgyV2lazrRh9lfb5WhrWmaOsixH5ba0NEfuiVvcoqiIooAL2fPu//o+JyeHqIgcd8Dn/Xpd3P1+P+4eTvI+Ps/3eR4LrVarBRERERHpWd67S0RERESCAYmIiIgoCwYkIiIioiwYkIiIiIiyYEAiIiIiyoIBiYiIiCgLBiQiIiKiLBiQiIiIiLJgQCIiIiLKggGJiO4zaNAglC9fPlff+8knn8DCwgKFWWhoqPoZ58+fb+qmEJGRMCARFSDyoZyT27Zt20zd1CJPAmZO/qzyKmR99dVXWLVq1WMFvG+++SZPXpuoMLI2dQOIKOd+//13g8e//fYbNm7ceN/x6tWrP9HrzJkzBxqNJlffO3bsWHzwwQco6qZNm4a4uDj947Vr12Lx4sX47rvv4Obmpj/erFmzPAtIvXv3Rvfu3fPk+YiKOgYkogLkpZdeMni8d+9eFZCyHs8qISEBDg4OOX4dGxubXLfR2tpa3Yq6rEElIiJCBSQ5ntvhSyLKPxxiIypk2rRpg1q1auHQoUNo1aqVCkYfffSROvf333+ja9eu8PLygp2dHSpWrIjPP/8c6enpD61Byjwk8/PPP6vvk+9v2LAhDhw48MgaJHn85ptvqiEgaZt8b82aNbF+/fr72i/Dgw0aNIC9vb16nZ9++inHdU07d+7E888/Dx8fH/Ua3t7eGD16NBITE+/7+RwdHREeHq4Ci9wvXbo03nnnnfvei+joaHW9s7MzXFxcMHDgQHUsr/zxxx8ICAhAsWLFUKpUKfTt2xeXL182uObcuXPo1asXypQpo96XcuXKqevu3Lmjzst7Ex8fjwULFuiH7qTNTyoqKgpDhw6Fh4eHel1/f3/1GlktWbJE/QwlSpSAk5MTateuje+//15/PjU1FZ9++ikqV66snsfV1RUtWrRQ4Z7IXPGfeUSF0M2bN9GlSxf1ISq9S/IBJ6TeRcLAmDFj1NctW7Zg/PjxiImJwZQpUx75vIsWLUJsbCxeffVV9SE8efJk9OzZExcuXHhkr9OuXbvw119/4Y033lAfpNOnT1cf+mFhYeoDUxw5cgSdO3eGp6en+kCVsPLZZ5+p8JITy5cvV71lr7/+unrO/fv3Y8aMGbhy5Yo6l5k8d6dOndC4cWMV/DZt2oRvv/1WhTL5fqHVavHcc8+ptr/22mtq6HLlypUqJOWFL7/8EuPGjcMLL7yAV155BdevX1ftlWAr74UEspSUFNXO5ORkjBw5UoUkCXZr1qxRQU2Cmwyxyvc3atQIw4cPV88tP8eTkFApYTskJESF2woVKqj3UIKXvO7//vc/dZ2EnBdffBHt27fH119/rY6dPn0au3fv1l8jAXfixIn6Nsrv28GDB3H48GE89dRTT/w+EhmFlogKrBEjRmiz/m/cunVrdWz27Nn3XZ+QkHDfsVdffVXr4OCgTUpK0h8bOHCg1tfXV//44sWL6jldXV21t27d0h//+++/1fHVq1frj02YMOG+NsljW1tbbUhIiP7Y0aNH1fEZM2bojz377LOqLeHh4fpj586d01pbW9/3nNnJ7uebOHGi1sLCQnvp0iWDn0+e77PPPjO4tl69etqAgAD941WrVqnrJk+erD+WlpambdmypTo+b948bU5NmTJFfY+8lyI0NFRrZWWl/fLLLw2uO378uPp5M44fOXJEfd/y5csf+vzFixdXP1dOZPx5SpseZNq0aeqaP/74Q38sJSVF27RpU62jo6M2JiZGHfvf//6ndXJyUu/Lg/j7+2u7du2ao7YRmQsOsREVQjK8NHjw4PuOyzBOBukJunHjBlq2bKl6Xc6cOfPI5+3Tpw9KliypfyzfK6QH6VE6dOhg0KtRp04dNRyT8b3SoyO9ODLkJUOAGSpVqqR6w3Ii888nQ07y80kRtGQ06ZHJSnqFMpOfJ/PPIoXVUk+V0aMkrKysVE/Ok5LeNCmEl94jaWfGTXqIZChq69at6jrpIRIbNmxQf075RX52aYv0DmWQXsK33npLFZ9v375dHZNeLnmvHzZcJtecPHlSDRUSFRQMSESFUNmyZWFra3vfcfmQ6tGjh/rQlXAiQ1cZBd4Z9SwPI7U9mWWEpdu3bz/292Z8f8b3Sr2LDOtIIMoqu2PZkeE6GQKSWp6MuqLWrVtn+/NJLUzWobvM7RGXLl1Sw33yXJlVrVoVT0rCggQ3CUPSjsw3GaKS90PI0JYMif7yyy9q9psMt82aNStHf15PQn52aZulpWW2MyTlvJAh0ypVqqgQK7VRQ4YMua+2TIZJZVhOrpP6pHfffRfHjh0zavuJnhRrkIgKocw9KRnkA0rCggQj+cCS3hwJCVIH8v777+doWr/0nmRHN4pmvO/NCemBknqWW7duqZ+nWrVqKF68uKrXkdCU9ed7UHvyi7RH6rjWrVuXbVsyhzKpjZKfQYrs//vvP9WLIzU9MotRQokpubu7IygoSPVwyc8it3nz5mHAgAH6gm6pqTp//ry+/RL2ZLmD2bNnq7okInPEgERURMjsMCnelqEd+cDKcPHiRZgD+aCVwCZFwVlldyyr48eP4+zZs+pDWT6cMzzJTClfX19s3rxZDSllDizBwcF4UhJQJRxKD5H0rDyK9LzITdaZ2rNnD5o3b64CxhdffKHO5/Xq5fKzSy+PBLnMvUgZQ7FyPoP0Vj777LPqJtdLr5LMPpQC9IzeP+nVk2Ffucn7Kb+DUrzNgETmikNsREVERi9F5h4bmSH1ww8/wFzaJ3VKshTA1atXDcKR9Erk5Puz/nxyP/N088f19NNPIy0tDT/++KNBT5XMNHtSMvtP2iyz9bL2osljCbNCZnxJGzKToCShRWa2ZZDesrxcfkB+dlm7aenSpfpj0g752SUsZgxdZrQzg7RL6stERvuyXiPfL8Epc/uJzA17kIiKCClWlhobmaIuQzTS4yDTw/NqiCsvSI+CDMFI74gURksYmTlzplo7SYZxHkaG1KRXRtYykmE1GUr8888/c1Qf9SDSIyJtkZXBZS2oGjVqqB64vKj/kbZK78+HH36onluK02X5A+nRk6UEZLq+/CyyFINMs5f1naSnSUKK/LlJuJJlEjLIOkRS5D516lRV5C49U7KEwcNI71hSUtJ9x6Ut8vrSCyRDe7KmlqyLtWLFCjV9X1YJl7YK6QGSYc127dqp4T6pTZIQVbduXX29krxvsmSAtFF6kmSKvzyX/FxE5ooBiaiIkHWBZO2ct99+Ww3TSFiSAm1Zv0YKf82BfIBKb5EEAxmekYUepV5KipYfNctOZlitXr1aX58jw3VSkC4fwrLAYW5Ib8g///yDUaNGqQUdJVR269ZN1QTVq1cPT0qCl4QeqceRniQhP3PHjh3V6whpu/z5yM8mwU8W/pRj8j41adJE/1wSjCTUyJ+tFLtLEH5UQJJi6uwW65QwJKFUhmWljTJsKT1ZUpwu9UWZF6GU3yFZPFR6IqUHS2a+yWxHCbsZQ3PyZyLvo4Rf6TWS4TkJh1KsTWSuLGSuv6kbQUT0MNKjwWniRJSfWINERGYl67YgEopkTR4ZoiEiyi/sQSIisyLrDskQjp+fn6pnkQJpGZaRhR5lXR4iovzAGiQiMiuyF5vsei8zqGRF8KZNm+Krr75iOCKifMUeJCIiIqIsWINERERElAUDEhEREZE51iDJxotTpkxRNQeyvocsMtaoUaNsr50zZw5+++03nDhxQr9uitQnZFyfmpqq1gGRWS+yK7dsyimr806aNMlgh3BZ5yNjs8UMsnaKrPmRE7Kcvqz2K4ul5fUS/0RERGQcUlkUGxurMkHWzZizXmhSS5Ys0dra2mrnzp2rPXnypHbYsGFaFxcXbWRkZLbX9+vXTztr1iztkSNHtKdPn9YOGjRI6+zsrL1y5Yo6Hx0dre3QoYN26dKl2jNnzmgDAwO1jRo10gYEBBg8j6+vr/azzz7TXrt2TX+Li4vLcbsvX74stVu88cYbb7zxxhsK3k0+xx/G5EXastJrw4YN1XYCGT0zspLsyJEjc9SbI1sRyIrA8v2ZN6jM7MCBA6qHSXqMfHx89D1Isjqu3HJDthpwcXHB5cuX1ZYGREREZP5kVXjJGbLyu4wymeUQm2yUKXv8yF5EGaS7S4bEAgMDc/QcCQkJalhN9vd5WJiRYTAJNJnJsNvnn3+uQlO/fv0wevRoWFtn/5bIOiyZN1aU7jkh4YgBiYiIqGB5VHmMSQPSjRs3VA+Qh4eHwXF5/Kh9lzK8//77ahxRQlV2ZCNGuebFF180CDKyN1D9+vVVsNqzZ48KadeuXVP7GWVH6pMy9koiIiKiws0sirRzS3qAlixZojZUlI0ps5KepRdeeEEVZMlqvJmNGTNGf79OnTqwtbXFq6++qoKQLE6XlQSozN+T0UVHREREhY9JA5KbmxusrKwQGRlpcFwey47QD/PNN9+ogLRp0yYVcB4UjqTuaMuWLY8cBpNaqLS0NISGhqodq7OS0JRdcCIiIqLCx6QBSXptZJr+5s2b1W7dGUXa8vjNN9984PdNnjwZX375JTZs2IAGDRo8MBzJJpdbt26Fq6vrI9sSFBSk6p/c3d2f8KciIqKCRj57pC6WCj4bGxvV+VLgh9hk2GrgwIEq6MhMs2nTpiE+Ph6DBw9W52VmWtmyZdXQl/j6668xfvx4LFq0SM1Ek7WThKOjo7pJOOrduzcOHz6MNWvWqBqnjGuk3khCmRSA79u3D23btlXrGMljKdB+6aWX1Iw4IiIqOiQYXbx4UYUkKhxcXFzUSNSTrFNo8oDUp08fXL9+XYUeCTJ169bF+vXr9YXbYWFhBgs5SS2R/DJLCMpswoQJ+OSTTxAeHo5//vlHHZPnykx6k9q0aaOGyqR2Sa6XmWkVKlRQASlzjRERERV+UqMqE3Skx0HqSh+6cCAViD9Pmd0eFRWlHnt6eub6uUy+DlJBJUXasn6CLCHAaf5ERAWTjDqEhISo2dAPWxOHCpabN2+qkFSlSpX7htty+vnNqExEREWWlGEIKb+gwsPBwUEfgHOLAYmIiIo87qlZuFjkwZ8nAxIRERFRFgxIREREpGaGy0xy0mFAIiIiKmDDRw+7yQzt3JCN3YcPH/5EbWvTpk2uN4E3Nyaf5k+GNBot9l28hUYVSsHKkmPiRERkSJYlyLB06VK1TE5wcLD+mKwJmEEmqksh+oM2Ys+sdOnSRmhtwcUeJDMiv8jdZu3Ci3P2YlfIDVM3h4iIzJAsgJhxk+nq0muU8Vg2epcFkNetW6d2qpB1/3bt2oXz58/jueeeU2sMSoBq2LCh2qrrYUNsFhYW+OWXX9CjRw81K6xy5cr6dQZz688//0TNmjVVu+T1vv32W4PzP/zwg3od2V9V2pp5zcMVK1agdu3aKFasmNohQzapl4WljYUByYzIL2OAj24l7z8PXTF1c4iIiuZCgylpJrnl5bKEH3zwgdqv9PTp02q/0ri4ODz99NNqK68jR46gc+fOePbZZ9VizA/z6aefqq27jh07pr6/f//+uHXrVq7adOjQIfVcffv2xfHjx9VQ4Lhx4zB//nx1/uDBg3jrrbfw2WefqR4xWTS6VatW+l6zF198EUOGDFE/k2xS37Nnzzx9z7LiEJuZ6R3gjQWBl7DhZATuJKbCuZiNqZtERFRkJKamo8b4DSZ57VOfdYKDbd58LEvIeOqpp/SPZastf39//ePPP/8cK1euVD1CD9v7dNCgQSqYiK+++grTp0/H/v37VcB6XFOnTkX79u1VKBKyiOOpU6cwZcoU9ToS1ooXL45nnnlG9YL5+vqiXr16+oAkG8pLKJLjQnqTjIk9SGamVlknVPUogeQ0Df49dm+cmYiIKKeybuQuPUjvvPMOqlevrvYpk2E26Yl5VA9SnTp19PclvMjK0xnbeDwueb3mzZsbHJPHsrG81ElJoJPw4+fnh5dffhkLFy5U24YICXcSriQUPf/885gzZw5u374NY2IPkhkOs/UKKIuv1p7BikOX0a+xj6mbRERUZBSzsVI9OaZ67bwiYSYzCUcbN27EN998g0qVKqk6Hqnvkb1NH8bGxua+zyhjbeorvUay0bwMn/3333+q+FyG4WR2nYQ6af+ePXvUuRkzZuDjjz9WG8/LfqrGwB4kM9S9blk1g+1wWDQuXI8zdXOIiIoMCQAyzGWKmzFX8969e7caxpKCa+mFkYLu0NBQ5Kfq1aurdmRtV+b90mS2nRRfT548WdU9SRu3bNmizsn7Iz1OUhcldVSyPYwMExoLe5DMkLuTPVpXKY0tZ6Lw5+EreLdTNVM3iYiICjCZGfbXX3+pwmwJGlIHZKyeoOvXryMoKMjgmKenJ95++201e07qn/r06YPAwEDMnDlTzVwTa9aswYULF1RhdsmSJbF27VrVxqpVq6qeIikw79ixI9zd3dVjeR0JXcbCHiQz1TugnPr61+FwpGuMV6VPRESFnxRIS+ho1qyZCkmdOnVC/fr1jfJaixYtUsXVmW9SMySvt2zZMixZsgS1atVSQ2hSTC49W0KG0STEtWvXTgWf2bNnY/HixWpZAKl92rFjh5pJJz1OY8eOVUsEdOnSxSg/g7DQGnOOXCEWExOj1p+4c+eO+oPLa8lp6Wj05WY1k+33oY3QsjIX8CIiymtJSUm4ePGiqmORtXeo8P+5xuTw85s9SGbKztoK3fy91H2uiURERJS/GJAKwDDb+pMRiElKNXVziIiIigwGJDNWp5wzKrs7IilVg7VcE4mIiCjfMCCZ/ZpIul6kFRxmIyIiyjcMSGauR72ysLQADl66jdAbxtuUj4iIiO5hQDJzHk72aFVFN4NN1kQiIiIi42NAKkDF2jKbTcM1kYiIiIyOAakA6FDdA0721rh6JwmBF26aujlERESFHgNSAWBvY4VnuSYSERFRvmFAKmDDbGtPXEMs10QiIiIyKgakAqKutwsqli6u1kRadzzC1M0hIiITLgHzsNsnn3zyRM+9atWqPLuuIGNAMjfJscDh34B0w14irolERETi2rVr+tu0adPUfmKZj73zzjumbmKhwIBkTmTf4J9aA/+MBILX3ne6Z71yak2k/aG3cOkm10QiIiqKypQpo7/JpqvyD+jMx5YsWYLq1aurTVqrVauGH374Qf+9KSkpePPNN+Hp6anO+/r6YuLEiepc+fLl1dcePXqo58x4/Lg0Gg0+++wzlCtXDnZ2dqhbty7Wr1+fozZotVrVA+bj46O+18vLC2+99RZMwdokr0rZs7AAavYAdn4DHPgVqPGcwekyzvZoUbk0dpy9jj8Ph2PMU1VM1lQiokL7D9XUBNO8to2D7nPgCSxcuBDjx4/HzJkzUa9ePRw5cgTDhg1D8eLFMXDgQEyfPh3//PMPli1bpkLI5cuX1U0cOHAA7u7umDdvHjp37gwrK6tcteH777/Ht99+i59++km1Ye7cuejWrRtOnjyJypUrP7QNf/75J7777jsV8mrWrImIiAgcPXoUpsCAZG4CBgI7vwUubgduhABule4r1lYB6dAVjGpfGZbSpURERHlDwtFXulnD+e6jq4Bt8Sd6igkTJqhw0rNnT/W4QoUKOHXqlAorEpDCwsJUSGnRooXqJZLemwylS+sWJXZxcVE9Ubn1zTff4P3330ffvn3V46+//hpbt25Vw4GzZs16aBvknLx2hw4dYGNjowJUo0aNYAocYjM3Lj5A5Y66+4fm3Xe6Yw0PlLC3Rnh0IvZe5JpIRESkEx8fj/Pnz2Po0KFwdHTU37744gt1XAwaNAhBQUGoWrWqGrr677//8rQNMTExuHr1Kpo3b25wXB6fPn36kW14/vnnkZiYCD8/P9XztXLlSqSlpcEU2INkjhoMAc5tAIIWAu3GAjbFDNZEeqaOFxbvD1PF2s0qupm0qUREhYoMc0lPjqle+wnExcWpr3PmzEHjxo0NzmUMl9WvXx8XL17EunXrsGnTJrzwwguqt2bFihXIL/Uf0gZvb28EBwer4xs3bsQbb7yBKVOmYPv27apHKT+xB8kcVX4KcPYGEm8Dp/5+4JpI609EID7ZNMmaiKhQkhogGeYyxe0J6488PDxUUfOFCxdQqVIlg5sMtWWQWW99+vRRQWrp0qWq7ufWrVvqnISQ9PT0XLdBnlvasHv3boPj8rhGjRo5akOxYsXw7LPPqlqlbdu2ITAwEMePH0d+Yw+SObK00tUibfkCODgX8NeN42ao7+MCP7fiuHAjHmuPX8PzDbxN1lQiIjIfn376qRq2ktltUmidnJyMgwcP4vbt2xgzZgymTp2qZo9J8bSlpSWWL1+uan6k7kjIzLXNmzerITGZRVayZMkHvpb0AslQWWZSW/Tuu++qWqiKFSuqGWxS9C3XSQG5eFgb5s+frwKa9IA5ODjgjz/+UIEpc51SfmFAMlf1Xga2TQIu7wMiTgBlat23JtKUDcFqmI0BiYiIxCuvvKKChQxLSVCR2Wu1a9fGqFGj1PkSJUpg8uTJOHfunBp2a9iwIdauXauCipACbwlSc+bMQdmyZREaGvrA15Lrstq5c6cKaHfu3MHbb7+NqKgo1XMks9YkPD2qDRKSJk2apJ5bgpK0ffXq1XB1dUV+s9DKogOUq0I0SejySyBdhUaxbIBuiK3BUOCZqQanrkYnovnXW9SM1J3vtYV3qScbuyYiKoqSkpJUT4gMQcmaPFT4/1xjcvj5zRokcybBSBxbqlthOxMvl2JoUUlXoP3nYa6sTURElJfMIiDJuggy7ikpT8Yd9+/f/8BrpduvZcuWalxUblL5nvV66RSThbJkjFPGLuUa6crLTIrB+vfvr9KjdOnJtMiMGQBmo0IrwLUSkBIHHL9/hkGv+uX0AUmjYUcgERFRoQlIUr0uY41S0HX48GH4+/ujU6dOatwyO1LR/uKLL6pFp6SyXaYEduzYEeHh4fprZGxTqt9nz56Nffv2qTFYeU7pcssg4UhW9ZRphGvWrMGOHTswfPhwmBWZ0RAwWHf/4K+6FV4z6VSzDBztrHH5VqLafoSIiIjyiNbEGjVqpB0xYoT+cXp6utbLy0s7ceLEHH1/WlqatkSJEtoFCxaoxxqNRlumTBntlClT9NdER0dr7ezstIsXL1aPT506JUlDe+DAAf0169at01pYWGjDw8Nz9Lp37txRzyFfjSr+plb7WWmtdoKTVnv5XnszvL/iqNb3/TXat5cFGbcdRESFUGJiovpMkK9UNP5c7+Tw89ukPUiyYd2hQ4fUEFgGqWKXx9I7lBMJCQlITU1FqVKl1GMpypK9WzI/pxRjydBdxnPKVxlWa9Cggf4auV5eW3qczIpDKaCWbsl4NeX/AWsiyXR/rolERJQ7nK9UuGjz4M/TpAHpxo0bahqfLG6VmTyWkJMTst+LLEqVEYgyvu9hzylfZUO+zKytrVXIetDryloSUvme+ZavK2uLE3/qFo/MJMC3JMq7OiAhJV0tHElERDmXscK0/IOdCo+EBN2Gw0+y+naBXgdJ1kqQHX+lLsnY0zMnTpyoFuAyiXINAY9aQOQJIGgx0PQNwzWR6pfDtxvPqjWRZH0kIiLKGfnHsawbdP36dfVhmrEeEBXcniMJR1LHLCNFGQG4wAUkNzc31fjIyEiD4/L4UTsJy27BEpBkv5Y6deroj2d8nzyHzGLL/JyyomfGNVmLwGUzPJnZ9qDX/fDDDw0WxZIeJCkQz7dibelF+neMbpityesGS9L3DCiHqZvOIvDCTVy+lcA1kYiIckj+kSmfFVKecenSJVM3h/KIhKNH5QizDki2trYICAhQy5p3795dHdNoNOrxm2+++cDvk1lqX375JTZs2GBQRyRkUSh5U+Q5MgKRhBmpLXr99dfV46ZNmyI6OlrVP8nriy1btqjXzrrBXwZZcl1uJlPnBWDjeODmOSB0F1Chpf5UWZdiaFbRFbtDbmLlkXC81V63WikREeXss0hWeeYwW+FgY2PzRD1HZjPEJr0yAwcOVEGnUaNGmDZtGuLj4zF4sG56+4ABA9Ry5zLEJb7++mu1xtGiRYvU2kkZNUOOjo7qJv8akCXVv/jiC/ULL4Fp3Lhxqk4pI4RVr15d7VEzbNgwtRSAFHlLIOvbt6+6zizZlQBqPw8cmqeb8p8pIAkZZpOAJMNsI9tVUu8DERHljAytcSVtyszkg62ym68Ml0nokR4f2dBu/fr1+iLrsLAwXLt2TX/9jz/+qFJ+7969Vbdoxk2eI8N7772HkSNHqnWNZI8XWQBSnjPzL79smletWjW0b98eTz/9NFq0aIGff/4ZZi2jWPv0aiDOcIiwc60yKG5rhbBbCTgQaljITURERI+He7GZ815s2fmlA3DlANB+PNDybYNT7604imUHr+CFBuUwubd//rWJiIiogOBebIVVRi/SofmAJt3gVO8AXdH4mmPXcCch1RStIyIiKhQYkAqamj0Ae2cgOgwI2WxwqmH5kqhWpoRaE2nJgTCTNZGIiKigY0AqaGyKAXX7Z7uythRmD2leQd2fvycUqekaU7SQiIiowGNAKsjDbOc2ANGXDU51q+sFN0dbXLuThHVcWZuIiChXGJAKIrfKQPmWgFYDHP7N4JS9jRVeauKr7v+66yL3FyIiIsoFBqSC3oskASndsCBbApKttSWOXo7G4TBO+SciInpcDEgFVbVngOLuQFwEELzW4JSbox161C2r7v+y86KJGkhERFRwMSAVVNa2QP2Xsy3WFkNa6Iq1N5yMUPuzERERUc4xIBVk9QfK3DXgwjbg5nmDU1XLlEDLym7QaHUz2oiIiCjnGJAKspK+QOWnHtiLNPRuL9LSA5cRm8SFI4mIiHKKAamgazBU9zVoIZCaZHCqdZXSqOTuiLjkNBWSiIiIKGcYkAo66UFyKgck3gZO/f3QhSPTuHAkERFRjjAgFXSWVkDAIN39g7/ed7pn/bIo6WCDK7cT8d+pyPxvHxERUQHEgFQYyGw2S2vg8j4g4sRDF44kIiKiR2NAKgxKlAGqddXdPzTvvtMvN/GFjZUFDl26jSNcOJKIiOiRGJAK28raR5cCyXEGp9yd7NHNX7dwJHuRiIiIHo0BqbAo3wooVRFIiQWOL3/glH/ZwDY8OtEEDSQiIio4GJAKC0vLe71IB34FsmxSW8PLCU39XJGu0eI3LhxJRET0UAxIhUndfoCNAxB5HAjZfN/pV1rqepEW7Q9DfHKaCRpIRERUMDAgFSYOpYCAwbr7O7+573Tbqu7wcyuO2KQ0LD/IhSOJiIgehAGpsGk2ErCyBcICgdDdBqcsLS0wuHl5dX/enlA13EZERET3Y0AqbJw8gbr9H9iL1CugHJyL2eDSzQRsPs2FI4mIiLLDgFQYtRgFWFgB57cA4YcMTjnYWqNfYx91/xdO+SciIsoWA1JhVLI8UPt53f2dU+87PbBpeVhbWmD/xVs4EX4n/9tHRERk5hiQCquWY2S7WuDMGiDqtMGpMs726FrHU93nwpFERET3Y0AqrEpXBao/88BepIyFI1cfvYqIO0n53ToiIiKzxoBUmLV8W/f1xArg1gWDU3XKuaBR+VJIk4UjA7lwJBERUWYMSIWZVz2gUgdAqwF2Tbvv9JAW9xaOTEjhwpFEREQZGJAKu5bv6L4GLQLuhBuceqqGB3xKOSA6IRV/HjY8R0REVJQxIBV2vk0B3+aAJhUInGlwyirzwpG7LkLDhSOJiIgUBqSiVIt0cB4Qf8Pg1PMNvFHCzhoXbsRj29ko07SPiIjIzDAgFQUV2wGedYG0RGDvDwanHO2s8WLGwpE7OeWfiIhIMCAVBRYWQKu7tUj75wCJ0QanBzYrr4bb9py/iVNXY0zTRiIiIjPCgFRUVO0KlK4OJMcAB+YYnCrrUgyda5VR9+fuZi8SERERA1JRYWl5d3VtAHt/BFLiDU6/cnfK/z9BVxEVy4UjiYioaGNAKkpq9tTt05ZwEzi0wOBUPZ+SqO/jgpR0DbcfISKiIo8BqSixsgZajNbd3zMdSEs2OD2ibSX1dcGeUETFsBeJiIiKLgakosb/RaCEFxB7Tbd4ZCbtqrmjno8LklI1+GHbeZM1kYiICEU9IM2aNQvly5eHvb09GjdujP379z/w2pMnT6JXr17qegsLC0ybdv/2GRnnst5GjBihv6ZNmzb3nX/ttddQJFjbAc1G6u7vngak39tiRN6HdztWVfcX7QtDeHSiqVpJRERUdAPS0qVLMWbMGEyYMAGHDx+Gv78/OnXqhKio7BcsTEhIgJ+fHyZNmoQyZXSzrrI6cOAArl27pr9t3LhRHX/++ecNrhs2bJjBdZMnT0aRETAQcHAFbocCJ/8yONWskhua+rmqWqTpm86ZrIlERERFNiBNnTpVBZXBgwejRo0amD17NhwcHDB37txsr2/YsCGmTJmCvn37ws7OLttrSpcurcJTxm3NmjWoWLEiWrdubXCdvE7m65ycnFBk2BYHmryhu7/zW0CjMTj9TiddL9KKw1dw8YbhbDciIqKiwGQBKSUlBYcOHUKHDh3uNcbSUj0ODAzMs9f4448/MGTIEDV8lNnChQvh5uaGWrVq4cMPP1S9Uw+TnJyMmJgYg1uB1mgYYOcMXD8DBP9rcCrAt6SqR0rXaPHdxrMmayIREVGRC0g3btxAeno6PDw8DI7L44iIiDx5jVWrViE6OhqDBg0yON6vXz8VnLZu3arC0e+//46XXnrpoc81ceJEODs762/e3t4o0OyddSFJ7PgG0BpuVPt2xyrq6+pjV3EmooCHQSIiooJWpG1Mv/76K7p06QIvLy+D48OHD1e1TrVr10b//v3x22+/YeXKlTh//sEztyRI3blzR3+7fPkyCjwZZrNxAK4FAec3G5yq6eWMrrU9VW769j/2IhERUdFisoAkw1tWVlaIjIw0OC6PH1SA/TguXbqETZs24ZVXXnnktTJ7ToSEhDzwGql5kjqlzLcCr7grEHC3d23n1PtOj36qCiwtgI2nIhF02XD/NiIiosLMZAHJ1tYWAQEB2Lz5Xs+FRqNRj5s2bfrEzz9v3jy4u7uja9euj7w2KChIffX09ESRI1P+rWyBS7uBS4a1X5XcHdGjXjl1/9v/gk3UQCIioiI2xCZT/OfMmYMFCxbg9OnTeP311xEfH69mtYkBAwaooa3MRdcSZuQm98PDw9X9rD0/ErQkIA0cOBDW1tYG52QY7fPPP1cF4qGhofjnn3/U67Rq1Qp16tRBkePkBdTtp7u/85v7To/qUBk2VhbYee4G9l64mf/tIyIiKmoBqU+fPvjmm28wfvx41K1bV4Wd9evX6wu3w8LC1BpFGa5evYp69eqpmxyX75X7WYfRZGhNvldmr2XXcyXnO3bsiGrVquHtt99Wi0+uXr0aRVbzUYCFFRCyCbh6xOCUdykH9GmoK0j/ZkMwtFmKuYmIiAojCy0/8XJFpvnLbDYp2C4U9Uh/DQeOLQWqPwv0+cPgVGRMElpN3orkNA3mDW6ItlXdTdZMIiKi/Pj8LtSz2OgxtBij+3p6NRB1xuCUh5M9BjT11dciMVMTEVFhx4BEOu7VdL1HYsvn951+rXVFFLe1wonwGKw/kTfrVBEREZkrBiS6p+1YXS3SmTVA6C6DU66OdhjSooK6/+3Gs2qVbSIiosKKAYkMe5Ey1kXa8NF9e7S90tIPTvbWCImKw99B4aZpIxERUT5gQCJDbT4E7JyAa0eB48sMTjkXs8GrrSuq+9M2nUNqumGAIiIiKiwYkMiQY2mg5d2C7U2fAimGm/gObl4ebo62CLuVgOUHr5imjUREREbGgET3a/w64OwDxF4FAmcZnHKwtcYbbSqp+zO2nENSarqJGklERGQ8DEh0Pxt74KlPdPd3fQfEGs5a69fYB57O9rh2JwkL94WZpo1ERERGxIBE2avZEyjXEEiNB7Z+aXDK3sYKb7WvrO7/sDUE8clpJmokERGRcTAgUfYsLIBOX+nuH/4diDhhcLp3QDn4ujrgZnwK5u8JNU0biYiIjIQBiR7MuxFQswcALfDfx0CmFbRtrCwxukMVdf+n7edxJzHVhA0lIiLKWwxI9HAdPgGsbIEL24BzGw1OPevvhSoejohJSsOcHRdM1kQiIqK8xoBED1eyPND4Nd39/8YC6ffqjawsLTDmqarq/tzdF3EjLtlUrSQiIspTDEj0aC3fBhxcgRvBwOH5Bqc61fRA7bLOSEhJx4/bzpusiURERHmJAYkerZiLboVtsfUrIOmO/pSFhQXe7qirRfp97yVcu5NoqlYSERHlGQYkyhnZo82tCpBwE9g51eBU6yql0bB8SaSkaTBjS4jJmkhERJRXGJAoZ6xsgKc+193f+wNw+5JBL9I7HXW1SEsPXEZwRKypWklERJQnGJAo56p0Aiq0BtJTgM2fGpxq7OeKjjU8kK7RYtzfJ6DNtCQAERFRQcOARI+5eKSsqm0BnPgTuHzA4PT4Z2vA3sYS+y/ewqqgcJM1k4iI6EkxINHjKVMbqNdfd3/DRwaLR5Yr6YCR7XRbkHz57xnEJHHxSCIiKpgYkOjxtR0L2BQHruwHTq40OPVKywrwcyuu1kSa+t9ZkzWRiIjoSTAg0eNz8gSa/093f9MnQGqS/pSdtRU+fa6muv9bYChOXr23JAAREVFBwYBEudPsTaCEFxB9Cdj/k8GplpVLo2ttT2i0wPi/T0Ijd4iIiAoQBiTKHdviQPtxuvs7vgHibxicHvtMdTjYWuHQpdtYcfiKadpIRESUSwxIlHt1+gKe/kByDLBtksEpT+diGNVBV7A9ad0ZRCekmKiRREREj48BiXLP0hLoKNP+ARycC1wPNjg9uHkFVHZ3xK34FHzzn+E5IiIic8aARE+mQkugaldAmw5sHG9wysbKEp89V0vdX7gvDMeuRJuokURERI+HAYme3FOfAZbWwNn1wIVtBqeaVnRF97pearmkcatOqJW2iYiIzB0DEj05t0pAw1d09zd8DKSnGZz+qGt1lLCzxtErd7DkQJhp2khERPQYGJAob7R+HyhWEog8AQTOMDjlXsIeYzpWUfcnrw9WNUlERETmjAGJ8oZDKaDTRN39rROBG+cMTr/cxBfVPZ1wJzEVX687Y5o2EhER5RADEuUd/75ApQ5AejLwz0hAo9GfsrayxBfddStsLz14Wa2PREREZK4YkCjvWFgAz3wH2DoCYYHAwV8NTgf4lsLzAeXUfRZsExGROWNAorzl4gN0+OTePm3RhkXZ73epBid7a5y6FoM/9l4yTRuJiIgegQGJ8l6DoYBPUyAlDlgzGmqO/11ujnZ4t3M1dV8Wj7wem2zChhIREWWPAYmMs8J2txmAlR0Qsgk4usTgdL9GPqhTzhmxSWmYuO60yZpJRET0IAxIZBxulYE2H+jur/8AiIvSn7KytMDnz9VSJUt/HQ7H/ou3TNdOIiIicwxIs2bNQvny5WFvb4/GjRtj//79D7z25MmT6NWrl7rewsIC06ZNu++aTz75RJ3LfKtWTTekkyEpKQkjRoyAq6srHB0d1XNGRkYa5ecr0pq9pdvMNikaWPuOwSl/bxf0beijL9hOTb83442IiKhIB6SlS5dizJgxmDBhAg4fPgx/f3906tQJUVH3ehsyS0hIgJ+fHyZNmoQyZco88Hlr1qyJa9eu6W+7du0yOD969GisXr0ay5cvx/bt23H16lX07Nkzz3++Is/KGug2U7cNyam/gVP/GJx+r1NVlHSwQXBkLBbsCTVZM4mIiMwqIE2dOhXDhg3D4MGDUaNGDcyePRsODg6YO3duttc3bNgQU6ZMQd++fWFnZ/fA57W2tlYBKuPm5uamP3fnzh38+uuv6rXbtWuHgIAAzJs3D3v27MHevXuN8nMWaZ51gOajdPelFynx3vpHJYvb4oMuut69aZvOITImyVStJCIiMo+AlJKSgkOHDqFDhw73GmNpqR4HBgY+0XOfO3cOXl5eqrepf//+CAu7N9VcXjM1NdXgdWUIzsfH54lflx6g1buAWxUgLhLYMNbg1PMB3qjn44K45DR88S8LtomIqIgHpBs3biA9PR0eHh4Gx+VxRERErp9X6pjmz5+P9evX48cff8TFixfRsmVLxMbGqvPy3La2tnBxcXms101OTkZMTIzBjXLIxl431AYLIOgP4PwW/SnLuwXblhbA6qNXsTvkhkmbSkREZBZF2nmtS5cueP7551GnTh1Vz7R27VpER0dj2bJlT/S8EydOhLOzs/7m7e2dZ20uEnwaA41f1d3/539Acpz+VK2yzmqvNvHeimOISUo1VSuJiIhMG5CkLsjKyuq+2WPy+GEF2I9LeoqqVKmCkJAQ9VieW4b3JDQ9zut++OGHqn4p43b58uU8a2OR0W6cbqXtO2HAls8NTsnikT6lHBAenYhP/j5psiYSERGZNCDJMJcUSG/evFl/TKPRqMdNmzbNs9eJi4vD+fPn4enpqR7La9rY2Bi8bnBwsKpTetjrSlG4k5OTwY0ek50j8Oz3uvv7fgLC7hXFO9pZ47s+ddVQ219HwvHvsWumaycRERV5Jh1ikyn+c+bMwYIFC3D69Gm8/vrriI+PV7PaxIABA1TPTQbp+QkKClI3uR8eHq7uZ/QOiXfeeUdN3Q8NDVUz03r06KF6ql588UV1XobHhg4dql5769atqmhbXk/CUZMmTUzwLhQxFdsBdV8CoAX+GQmk3pu5FuBbEiPaVlL3P151nLPaiIjIZKxN99JAnz59cP36dYwfP14VSNetW1cVV2cUbkuvjsxsyyDrFdWrV0//+JtvvlG31q1bY9u2berYlStXVBi6efMmSpcujRYtWqjp+3I/w3fffaeeVxaIlOJrqVX64Ycf8vVnL9I6fQGEbARunAV2TAHaj9Ofeqt9ZWwLvo7j4XfwzvKjWDC4kSrkJiIiyk8WWm2mnUQpx2QWm/RGST0Sh9ty4fRqYOlLgIUVMHybbr2ku0Ki4tB1+k4kp2nwabeaGNisvEmbSkRERe/zu9DNYqMCovqzQI3ugDYd+HsEkJ6mP1XJ3REfPV1d3f9q7WmEROmWaCAiIsovDEhkOk9PAexdgIhjwJ7pBqcGNPVFqyqlVS/SqKVBSEnjXm1ERJR/GJDIdBzdgc6TdPe3TQJunNOfkk2Gp/SuAxcHG5wIj8H3m8+arp1ERFTkMCCRafn3BSp1ANKTdbPaNPd6ijyc7PFVj9rq/o/bzuNg6C0TNpSIiIoSBiQyLQsL4JlpgK0jEBYI7JttcPrp2p7oWb8sNFpgzLKjas82IiIiY2NAItNz8Qae+kx3f9MEIPywwelPutVEWZdiCLuVgM9Wc5VtIiIyPgYkMg8NhuhmtqWnACsGA0l39Kec7G0w9QV/1dm07OAVbDiZ+82MiYiIcoIBicyDpJ9uM3V7td0O1dUjZVqiq7GfK4a38lP3P/zrOKJiuco2EREZDwMSmY9iLsDz8wFLG+DU38CBXwxOj3mqCqp7OuFWfAreX3EMXOOUiIiMhQGJzEvZAKDj57r7Gz4CrgbpT9lZW2Fan7qwtbbE1uDrWLgvzHTtJCKiQo0BicxP49eAas/o6pGWDwKSYvSnqpYpgfc6VVX3v/z3NC5cjzNhQ4mIqLBiQCLzrEd6bibgLPVIF4HVbxnUIw1pXgHNKroiMTUdo5cdRWo6V9kmIqK8xYBE5qlYSeD5eYClNXByJXDwV/0pS0sLfPO8P5zsrXH0cjRmbgkxaVOJiKjwYUAi81Wuwb31kdZ/BFw7qj/l5VIMn3evpe7P3BqCI2G3TdVKIiIqhBiQyLw1eQOo+rRuK5Is9UjP1S2LZ/29kK7RYvTSICSkcJVtIiLKGwxIVADqkWYBzt7ArQvA6v8Z1CN98VwteDrbI/RmAr7497RJm0pERIUHAxKZP4dSQO+MeqS/gEPz9KecHWxUPZJYtC8MfweFm7ChRERUWDAgUcHg3RBoP0F3f90HQMRx/anmldzwRpuK6v77fx7Dyav3tikhIiLKt4B0+fJlXLlyRf94//79GDVqFH7++edcNYIoR5q+CVTprKtHWjYQSI7Vn3q7Y1W0rlIaSakaDP/tkFptm4iIKF8DUr9+/bB161Z1PyIiAk899ZQKSR9//DE+++zurCOivGZpCXT/EXAqB9w6D6wZra9HsrK0wPS+9eDr6oDw6ES8uegw0rg+EhER5WdAOnHiBBo1aqTuL1u2DLVq1cKePXuwcOFCzJ8/P7dtIcphPdJcwMIKOL4cOPybQT3Szy83gIOtFfacv4lJ686YtKlERFTEAlJqairs7OzU/U2bNqFbt27qfrVq1XDt2rW8bSFRVj6NgfbjdffXvQdEnDDYiiSjaPuXXRdZtE1ERPkXkGrWrInZs2dj586d2LhxIzp37qyOX716Fa6urrlrCdHjaPYWULkjkJakWx8p+d6ebE/X9tQXbb+34hhOhLNom4iI8iEgff311/jpp5/Qpk0bvPjii/D31/2L/Z9//tEPvREZvx5pNlDCC7h5Dvh3jMH6SFK03aZqaSSnafDq7yzaJiKix2Oh1Wb6VHkM6enpiImJQcmSJfXHQkND4eDgAHd3dxR28rM7Ozvjzp07cHJyMnVziq5LgcD8roA2Heg2E6j/sv7UnYRUdJu1C5duJqjNbX8b0gjWVlzZgoioKIvJ4ed3rj4tEhMTkZycrA9Hly5dwrRp0xAcHFwkwhGZEd+mQLuxuvtr3wGuHHpg0fZEFm0TEVEO5SogPffcc/jtN93soejoaDRu3Bjffvstunfvjh9//DE3T0mUe81H6dZHknqkxX2B6DCDou1v7xZt/7rrIlYeubd+FxERUZ4GpMOHD6Nly5bq/ooVK+Dh4aF6kSQ0TZ8+PTdPSfRk9Ui9fgE8agPxUcCiPkDSvcLsLrU9MaKtrmj7gz+Ps2ibiIiME5ASEhJQokQJdf+///5Dz549YWlpiSZNmqigRJTv7EoA/ZYCjmWAqFPA8sFAepr+9JinDIu2b8Ylm7S5RERUCANSpUqVsGrVKrXlyIYNG9CxY0d1PCoqigXLZDrOZYF+SwAbB+D8ZmDduwYrbX/ftx7K61faPsKVtomIKG8D0vjx4/HOO++gfPnyalp/06ZN9b1J9erVy81TEuUNr3q64TZYAAfnAnt/0J9yLmaDnwc0QHFbKwReuImv1rJom4iI8niav+zBJqtmyxpIMrwmZD826UGSFbULO07zN3N7ZgL/fawLSn0XAtW66k+tP3ENr/1xWN3/ro8/etQrZ8KGEhGROX5+5zogZbhyRTcrqFy5ovUhw4Bk5uTXWhaPlF4kGXIbvFbXu3TXNxuCMXNrCOysLfHn681Qq6yzSZtLRESFYB0kjUaDzz77TL2Ar6+vurm4uODzzz9X54hMzsIC6DIFqNgeSE0AFvUF7tyb4j/6qSpoy6JtIiLKy4D08ccfY+bMmZg0aRKOHDmibl999RVmzJiBcePG5eYpifKelTXw/HzAvQYQF6ELScmxulOWFpjWtx4quBVn0TYREeXNEJuXl5farLZbt24Gx//++2+88cYbCA8v/Duoc4itAJGFI+e0162RVLkT0HeRLjwBOBcZi+6zdiM+JR0vNfHB58/VgoX0PhERUaFk1CG2W7duZVuILcfkHJFZcfEBXlwCWBcDzm0ANnykP1XZowSm9qmrRuT+2BuG6ZtDTNpUIiIyD7kKSDJzTYbYspJjderUyYt2EeWtcgFAz5909/f/BOy7ex9Ap5pl8Gm3mur+d5vO4o+9XOyUiKioy1VAmjx5MubOnYsaNWpg6NCh6ib358+fj2+++eaxnmvWrFlqPSV7e3u1p5ssFfAgJ0+eRK9evdT1MgwiG+RmNXHiRDRs2FCt9C0b58r+cLKJbmZt2rRR35/59tprrz1Wu6kAqvEc0OET3f31HwBnN+hPDWhaHm+1r6zuj/v7BNYev2aqVhIRUUENSK1bt8bZs2fRo0cPtVmt3GS7EQkwv//+e46fZ+nSpRgzZgwmTJig9neTnqlOnTqpFbkftMWJn5+fKg4vU6ZMttds374dI0aMwN69e7Fx40akpqaqlb7j4+MNrhs2bJhaxynjJqGPisjGtvVeBrQa3XYkEcf1p0Z3qIx+jX3UCgGjlgRhT8gNkzaViIhM54nXQcrs6NGjqF+/PtLT03N0vfQYSW9PxnCdLBHg7e2NkSNH4oMPPnjo90ov0qhRo9TtYa5fv656kiQ4tWrVSt+DVLdu3Wx7oHKKRdoFWHoq8Ecv4OJ2wKks8MpmwMlTd0qjxZuLDmPdiQi14vbSV5tyjSQiokLEqEXaeSElJQWHDh1Chw4d7jXG0lI9DgwMzLPXkTdAlCpVyuD4woUL4ebmhlq1auHDDz9UvVMPk5ycrN7UzDcqoKxsgBd+A9yqADHhwOI+QEp8pun/ddHUz1XNbBs4dz8u3jDsfSQiosLPZAHpxo0bqqfJw8PD4Lg8lm1M8oL0SEkPU/PmzVUQytCvXz/88ccf2Lp1qwpHMiz40ksvPfS5pLZJEmfGTXq6qAAr5gL0WwY4uAHXjgJ/vgJodD2fdtZW+HlAAGp6OeFmfApe/nUfomKSTN1iIiIqCgEpP0gt0okTJ7BkyRKD48OHD1e1TrVr10b//v3x22+/YeXKlTh//vwDn0uClPRGZdwuX76cDz8BGVWpCsCLiwErOyB4LbDuPd0WJQBK2Ntg/uBG8HV1wJXbiRgwdz/uJKaausVERJRPdKvl5ZAUYj+MFGvnlAxvWVlZITIy0uC4PH5QAfbjePPNN7FmzRrs2LHjkfvESS2UCAkJQcWKFbO9xs7OTt2okPFuBPT4EVgxFDjwC2BtD3T8Qm1VUrqEHX4f0hi9Zu/BmYhYDFtwEL8NbQR7GytTt5qIiMypBynzEFN2N9mTbcCAATl6LltbWwQEBGDz5s0GQ2LyuGnTpsgtqTmXcCQ9Qlu2bEGFChUe+T1BQUHqq6enrlCXiphavYBn7xbsB84EtnyhP+Xj6oAFgxuhhJ019ofewsjF3JKEiKgoeKwepHnz5uXpi8sU/4EDB6JBgwZo1KiRmlUm0/EHDx6szkvYKlu2rKr/ySjsPnXqlP6+bGki4cbR0RGVKlXSD6stWrRIbXsiayFl1DNJgCtWrJgaRpPzTz/9NFxdXXHs2DGMHj1azXDjIpdFWMAgIC0FWPcusPMbwNoOaP2eOlXDywm/DGyAl+fux8ZTkfho5XF83asOtyQhIirE8nSaf27IFP8pU6aoICNT76dPn64f8pLp+DKdXxagFKGhodn2CMm6TNu2bVP3H/ShJeFu0KBBqnZICrKlNknCmBRby3pOY8eOfazp+pzmX0jtmQH8N1Z3v8OnQIt7y0hsOBmB1/84BI0WeKNNRbzX+f7tdoiIyLzl9PPb5AGpoGJAKsR2fANs+Vx3v/PXQJN7q6wv2R+GD/7SLS457pkaGNri0UO4RERkPsx+HSQis9XqHaCVbngN698HDs7Vn+rbyAfvdqqq7n++5hRWHQk3VSuJiMiIGJCIstP2I6DZW7r7a0YDR/7Qn5LhtcHNy6v77yw/iq3B2W+NQ0REBRcDElF2pJbtqc+AxneH1/5+Ezi2/O4pC4zrWgPP1fVCmkaLN/44jCNht03bXiIiylMMSEQPC0mdJwEBMqtSC6x8FTi5Sp2ytLTAlN7+aFWlNBJT0zF4/gGcCNdta0NERAUfAxLRo0JS16lA3f6ANh34cygQvE6dsrW2xOyX6qOutwuiE1LRb85eBF3O+WKpRERkvhiQiB7F0hLoNgOo1RvQpAHLBgDnNqlTDrbWanXtAN+SiElKw0u/7MPB0FumbjERET0hBiSinLC0Anr8BFTvBqSnAEv7Axe2q1NO9jb4bUgjNPErhbjkNLVv257zN0zdYiIiegIMSEQ5ZWUN9PoVqNIFSEsCFvcFLu1Rp4rbWWPeoEZoWdkNCSnpGDzvALafvW7qFhMRUS4xIBE9Dmtb4IUFQMX2QGoCsPB54PIBdaqYrRXmDGiA9tXckZymUZvbytYkRERU8DAgET0u2aet70KgfEsgJQ74oxdw9Yg6ZW9jhR9fCkCXWmWQkq5RW5OsPX7N1C0mIqLHxIBElBs2xYB+SwGfpkDyHeD3HsCVQ/rZbTNerKdfJ+nNRYe54jYRUQHDgESUW7bFgX7LgLINgMTbwIJngZDN6pS1lSWmvlAXvQPKqc1tRy8LwrIDl03dYiIiyiEGJKInYe8EDPgb8GsLpMYDi/oAx1eoU1aWFpjcqw76N/aBbAn93p/H8HtgqKlbTEREOcCARPSk7Bx1PUk1ewKaVN1ikntn61fc/qJ7Lf3ebeP+Polfdl4wcYOJiOhRGJCI8mp2mywB0Gi47vH694EtX0C6jmTvtvHP1MDrbSqqU1/8exqztoaYtr1ERPRQDEhEebnidpfJQNuxusc7pgBrRgGadBWS3utUFaM6VFanpmwIxtSNZ6GVsTciIjI7DEhEeb13W+t3gWe+AywsgUPzgeUDgdQkFZJGdaiC9zpXVZdO33wOk9afYUgiIjJDDEhExtBgCPD8fMDKFji9GljYG0i6o0690aYSxj1TQ93/afsFfLr6FEMSEZGZYUAiMpYazwEv/QnYlgBCdwLzuwJxUerU0BYVVPG2mL8nFO+tOIbUdI2JG0xERBkYkIiMqUIrYPC/QPHSQMRx4NeOwK2L6tRLTXwxuXcdWFoAyw9dwaB5+3EnMdXULSYiIgYkonzg6Q8M2QC4+AK3L+pC0rVj6tQLDbzV/m0OtlbYHXITvX/cg8u3EkzdYiKiIo8BiSg/uFYEhv4HeNQC4qN0w22hu9Sp9tU9sOzVpvBwssO5qDj0+GE3gi5Hm7rFRERFGgMSUX4pUQYY9C/g2xxIjgF+76kr4AZQq6wzVo1ojuqeTrgRl4K+Pwdi/QlucktEZCoMSET5qZiLrnC7alcgPRlYNgA4tECd8nQuhuWvNUXbqqWRlKrB6wsP4+cd5znDjYjIBBiQiPKbTTHghd+Aei8BWg2w+i1g2yS16rajnbWqSXq5ia/av+2rtWfw8aoTSOMMNyKifMWARGQKVtZAt5lAizG6x9sm6haUTI6DtZUlPnuuplorSdadXLQvDEMWHERsEme4ERHlFwYkIlOR9NNhAvDsdMDSBjj1NzC3E3A7VK26LWslzX4pAPY2lthx9jqenx2Iq9GJpm41EVGRwIBEZGoBA4FBa4Di7kDkCeDntsDFHepUp5pl1Ay30iXscCYiFt1n7cbxK7oVuYmIyHgYkIjMgU8TYPhWwLMukHgL+K07sO9nVZdUp5wLVr7RDFU9SiAqNhkv/BSIjaciTd1iIqJCjQGJyFw4lwOGrAdqvwBo04F17wL/jATSklGupAOWv94ULSu7ITE1HcN/P4i5uy5yhhsRkZEwIBGZ2wy3nj8DT30OWFgCR34H5j8DxEbCyd4Gcwc1xIuNfNQMt8/WnMIn/5zkDDciIiNgQCIyx+Lt5m8B/ZYDds7Alf3Az22A8EOwsbLEVz1q4aOnq6lLFwRewvDfDyGGM9yIiPIUAxKRuarcARi2BXCrAsReBeZ2AY4uVTPchreqiB/714edtSW2nIlCtxm7cPpajKlbTERUaDAgEZkzt0rAK5uBKp11K2+vHA78NxbQpKNLbU81w62sSzGE3kxQM9yWH7xs6hYTERUKDEhE5s7eCei7GGj5ju7xnhnAwt5A4m34e7tgzcgWaF2lNJLTNHh3xTF88OcxJKWmm7rVREQFGgMSUUFgaQm0Hwf0ngfYOADntwBz2gFRZ1CyuC3mDWqIMU9VUeVLSw5cRq8f9yDsZoKpW01EVGAxIBEVJLV6AkM2AM4+wK0LwC8dgOB1sLS0wFvtK+P3IY1RqrgtTl6NQdcZO7leEhFRLjEgERU0nnV0i0r6tgBSYoHFfYGN44H0VLSo7IZ/32qB+j4uiE1Kw7DfDmLiutNcCoCIqKAFpFmzZqF8+fKwt7dH48aNsX///gdee/LkSfTq1UtdLzN5pk2blqvnTEpKwogRI+Dq6gpHR0f1nJGR/Jc2FSDF3YABq4BGw3WPd3+v28ft1gV4OhfDkuFNMaR5BXXqp+0X0P+XfYiKTTJtm4mIChCTBqSlS5dizJgxmDBhAg4fPgx/f3906tQJUVFR2V6fkJAAPz8/TJo0CWXKlMn1c44ePRqrV6/G8uXLsX37dly9ehU9e/Y02s9JZBRWNsDTU4AXfgfsndU6SZjdCji2HLbWlhj/bA3M6lcfxW2tsO/iLXSdvgt7L9w0dauJiAoEC60J9yqQ3p2GDRti5syZ6rFGo4G3tzdGjhyJDz744KHfKz1Eo0aNUrfHec47d+6gdOnSWLRoEXr37q2uOXPmDKpXr47AwEA0adIkR22PiYmBs7Ozej4nJ6dcvgNEeST6MvDXMCAsUPfYv58uPNk54vz1OLzxx2EER8bC0gJ4t1M1vNbaT/XCEhEVNTE5/Pw2WQ9SSkoKDh06hA4dOtxrjKWleixBxVjPKedTU1MNrqlWrRp8fHwe+rrJycnqTc18IzIbLt7AwDVA6w90W5QcXQT81Aq4GoSKpR2xckQz9KxXFhot8PX6Mxj22yHcSeTq20REZheQbty4gfT0dHh4eBgcl8cRERFGe075amtrCxcXl8d63YkTJ6rEmXGTXikis2JlDbT9UBeUnMoCt87rZrkFzoKDjRW+fcEfX/WoDVsrS2w6HYlnZuzEifA7pm41EZFZMnmRdkHx4Ycfqu64jNvly1yxmMxU+ebAa7uAas8AmlRgw0fAohdgEX8D/Rr74M/Xm6FcyWK4fCsRPX/cgz/2XoIJR9qJiMySyQKSm5sbrKys7ps9Jo8fVICdF88pX2UoLjo6+rFe187OTo1VZr4RmS2HUkCfP4CuUwFre+Dcf8Ds5sD5rahdzhn/jmyJ9tXckZKmwdhVJzBk/gFExXCWGxGRyQOSDHMFBARg8+bN+mNSUC2PmzZtarTnlPM2NjYG1wQHByMsLCzXr0tklqQIu+FQYNhWoHR1IC4S+L0HsHECnO2AOQMaYGzX6mrG29bg6+g4bQf+PXbN1K0mIjILJh1ik+n4c+bMwYIFC3D69Gm8/vrriI+Px+DBg9X5AQMGqKGtDNLzExQUpG5yPzw8XN0PCQnJ8XNK/dDQoUPVdVu3blVF23JOwlFOZ7ARFSgeNYBhW4AGQwBogd3T1JpJltGheKWln9rLraaXE6ITUjFi0WGMWnIEdxJYwE1ERZtJp/kLmY4/ZcoUVSBdt25dTJ8+XU3VF23atFHT+efPn68eh4aGokIF3eJ3mbVu3Rrbtm3L0XNmLBT59ttvY/HixWp2mqyT9MMPPzzW0B6n+VOBdOpv4J+RQNIdwLYE8Ow0oHZvNdQ2Y8s5zNoaoma6lXGyx5Tn66Bl5dKmbjERUZ7K6ee3yQNSQcWARIVmzaQ6fYDOk1Td0uGw23h72VFcvBGvTg1s6osPulRHMVsr07aZiKiorINERGayZtKxpcCsxsCpf1Dfp6Tay21AU1916YLAS+g6fSeOhN02dauJiPIVe5ByiT1IVChcPgD8PQK4Eax7XKO7bgVuR3fsOHsd7604hoiYJLUC94i2lTCyXWVV1E1EVFCxB4mIHs27IfDqDqDlO4CFFXBqFTCrEXB0KVpVdsOGUa3wXF0vVZc0Y0sIev64G+ciY03daiIio2MPUi6xB4kKnWtHdb1JEcd1jyt3Ap75DnAuizXHrqr1kmSmm/QgvdepKoY0rwBL6VoiIipAWKRtZAxIVCilp+qWAdg+GUhPAeycgI6fA/UHIjI2Ge//eQzbgq+rSxtXKIVvnveHdykHU7eaiCjHGJCMjAGJCrWoM7repPCDuscVWgPdpkPr4ovF+y/ji39PISElHY521nivc1X0b+wLK/YmEVEBwIBkZAxIVOhp0oG9PwJbvgDSEgEbB6D9BKDRcFy6naiWAzh4STe7zb+cM77sURu1yjqbutVERA/FgGRkDEhUZNw8D/zzFnBpl+6xd2Og20yku1bGwn2XMGV9MGKT09RMt8HNK2DMU1VQ3M7a1K0mIsoWA5KRMSBRkaLRAIfmARvHAylxgJUd0OYDoNlbiIxPw2drTun3cfN0tscn3WqiU83cbTpNRGRMDEhGxoBERXYV7jWjgJBNuseedYFnpgJlA7AtOArj/j6By7cS1akO1T3w6XM1UdalmGnbTESUCQOSkTEgUZElf2UcXQys/0C3pxssgPovq/qkRJuSak+3n3dcQJpGCwdbK4zuUAWDm5eHtRWXXSMi02NAMjIGJCryYiOBjeN0W5UIe2eg7VigwRCcvZGIj1cex4FQXRF3dU8nfNmjltrKhIjIlBiQjIwBieiuS4HAunfvLTDpXlNtV6LxaYblhy5j4rozaoFJCwugXyMfvNe5GpyL2Zi61URURMUwIBkXAxJRliUBpIh78+dAUrTuWK3eapHJm5au+GrtGfx5+Io67OZoh3HPVEc3fy9YSGoiIspHDEhGxoBElI34m8CWz4FD86VYCbApDrR6B2g6AoGX4vDxquO4cD1eXdqyshs+f64WyrsVN3WriagIiWFAMi4GJKKHuBoErH0XuLJf97hURaDL10iu0A4/bb+AmVtDkJKmga2VJQY1L48RbStx2I2I8gUDkpExIBHlYO0kKeCWtZPio3THqnQBOn+FixoPTPjnJHac1e3rVtLBBqOfqoIXG/nAhrPdiMiIGJCMjAGJKIeSYoDtXwP7ZgOaNN0ik83fgrbFaGy7GI8v/z2NkKg4dalf6eL4+OnqaFfNnfVJRGQUDEhGxoBE9JiuBwPr3gMubNM9dioHdPwMadW6Y/HBK5i28SxuxqeoU80rueLjp2ughhf/3yKivMWAZGQMSES5IH/dnP4H2PAxcOey7phXPaDDJ4jxao4ftp7H3F0XkZKuUcsCvBDgjbc7VoG7k72pW05EhQQDkpExIBE9gZQEYM90YM8M3d5uomI7FZQu21XG1+vPYM3dvd1kNe7XW1fEKy39UMzWyrTtJqICjwHJyBiQiPJA3HVgxxTg4FxAk6o7VqsX0G4sDsW64PM1pxF0OVq/Ce57naviOf+ysLRkfRIR5Q4DkpExIBHloVsXga1fAseX6x5bWgMBg6Ft9S5WX0jH1+vOIDxatwlunXLOGNu1BhpVKGXaNhNRgcSAZGQMSERGcO0YsPlTIGST7rEsNNl0BJIavYG5B2+qGqW45DR1qnPNMni3c1VULO1o2jYTUYHCgGRkDEhERnRxB7BxAnD1sO6xgyvQ6l3cqNYf3229hMX7w6DRAjLS1r1eWfyvfWX4unJFbiJ6NAYkI2NAIsqnGW+bPwNuhuiOufgAbcci2L0zpvx3DptOR6rDVpYW6F2/HEa2r4RyJR1M224iMmsMSEbGgESUT9LTgCO/A9smAXERumMetYD2E3DUviG+23wO24J1K3LbWFmgT0NvvNm2Mso4c2kAIrofA5KRMSARmWBpgH0/Aru+B5Lv6I6Vawi0eg+HbAPw3aYQ7Aq5oQ7bWluiXyMfvNG2ItxLMCgR0T0MSEbGgERkIgm3gF1Tgf1zgLQk3THPuqpGaa9tY0zdFIL9F2+pw/Y2lhjQtDxebeUHV0c707abiMwCA5KRMSARmVhsJBA4AzjwK5CaoDvmXhPaVu9gt01zfLs5BEfCovWLTQ5qVh7DW/nBxcHWtO0mIpNiQDIyBiQiMxF/E9g7C9j3M5ASqzvmVgXalm9ju20rfLvpAo6H64bkSthZY0iLChjasgKc7G1M224iMgkGJCNjQCIyM4m3gX0/AXt/AJLu1iiV8oO2xWhssmmLbzdfxJkIXYBysrfGsJZ+avjN2YFBiagoiWFAMi4GJCIzlRQD7P8ZCJwFJN7SLw+gaT4a/9m0x7dbQnEuSrf/W3FbK7zYyEf1KHk6FzNtu4koXzAgGRkDEpGZS47T7fEmG+LGR+mOOZWFptlb+NfmKczaGa7vUZLlAbrXLYtXW/uhknsJ07abiIyKAcnIGJCICojURODQAmD390DsVd0xRw9om76JnU5dMWtPFPbdnfUmOtbwwGttKqK+T0nTtZmIjIYBycgYkIgKmLRk4MgfwK5pwJ0w3THbEkD9ATjh3RfTD6Xgv1O6lbmFbIb7euuKaFO1NCwsLEzXbiLKUwxIRsaARFRApacCx5bqht6un9Eds7AEqnfD5WpDMOOsC1YeCUdquu6vxmplSuC11hXxTB1PWFtZmrbtRJRvn99m8X/7rFmzUL58edjb26Nx48bYv3//Q69fvnw5qlWrpq6vXbs21q5da3Be/rWX3W3KlCn6a+T1sp6fNGmS0X5GIjITVjZAvZeAN/YCL/0J+LUFtBrg1Cp4/9UNk++8i/09EjC8hY8q4pY6pVFLg9B6yjbM330RiSnppv4JiCgfmLwHaenSpRgwYABmz56twtG0adNUAAoODoa7u/t91+/ZswetWrXCxIkT8cwzz2DRokX4+uuvcfjwYdSqVUtdExFxd7+mu9atW4ehQ4ciJCQEfn5++oAkx4YNG6a/rkSJEihePGc7grMHiagQiTwJBP4AHF8GpKfojrn4IjHgVfye1AI/74vCjTjd8ZIONhjYrDxebuLL1bmJCqACM8Qmoahhw4aYOXOmeqzRaODt7Y2RI0figw8+uO/6Pn36ID4+HmvWrNEfa9KkCerWratCVna6d++O2NhYbN68WX9MAtKoUaPULTcYkIgK6ercB+boVufOWCLAzhlp9Qfib7tn8P3+BITdStDv99bN30ut0F2rrLNp201EhWuILSUlBYcOHUKHDh3uNcjSUj0ODAzM9nvkeObrRadOnR54fWRkJP7991/VW5SVDKm5urqiXr16avgtLS3tgW1NTk5Wb2rmGxEVMiU8gHZjgdEnga5TAddKamNc68Dp6LXjaWzz+wO/dbZFnXLOSEnTYMWhK3hmxi70+nEPVh+9itR0jal/AiLKI9YwoRs3biA9PR0eHh4Gx+XxmTN3iyezkOGz7K7POqyWYcGCBWrorGfPngbH33rrLdSvXx+lSpVSw3Yffvghrl27hqlTp2b7PDKk9+mnnz7mT0hEBZKtA9BwKBAwGDj3HxA4EwjdCcsTK9AKK9DStzkuPv0SZoRXxpoT13Ho0m1183CyQ//GvmrxydIlOPxGVJCZNCDlh7lz56J///6qoDuzMWPG6O/XqVMHtra2ePXVV1UQsrO7/y82CVCZv0d6kGQokIgKMUtLoGpn3e1qkG4bkxN/wuLSbvhd2o3vHMvgixb9sFjTDj8FJSMyJhlTN57FzC0h6FrHUw2/+Xu7mPqnIKJcMOkQm5ubG6ysrNQwWGbyuEyZMtl+jxzP6fU7d+5Uxd6vvPJKjmqhZIgtNDQ02/MSmmSsMvONiIoQr7pAz5+BUceBlm8DxUsDcREovm8qXjnYDfsq/IpFbeNQ39sJKekatVTAc7N2o/us3Vh1JFwNyRFRwWHSgCS9NgEBAQbF01KkLY+bNm2a7ffI8czXi40bN2Z7/a+//qqe39/f/5FtCQoKUvVP2c2cIyLSc/IC2o8HRp8Ces8DyrdUywRYnl2LZoHD8VfaSAS2Oo6X6xSHrZUlgi5Hq2UCmk3aonqXomKSTP0TEFEOmMU0/4EDB+Knn35Co0aN1DT/ZcuWqRokqS2SJQDKli2rhr6E1Au1bt1aFVh37doVS5YswVdffWUwzT9jCMzT0xPffvstXnvtNYPXlILuffv2oW3btqo+SR6PHj0aXbp0UTVLOcFZbESkdz1Yt+9b0GJV1K1Y2SKpyrNYY9MFU067IDJWt0yAtaUFOtcqg36NfNDEzxWWllylmyg/FZhp/kKm+MssMim0lun606dPV0Neok2bNmpK/vz58/XXyzpJY8eOVcNhlStXxuTJk/H0008bPOfPP/+spvBL4bW8EZlJmHrjjTdUCJPZaRUqVMDLL7+saoyyqz/KDgMSEd0nJV7VKKllAq4F6Q9r3WvghFdvTL7qj51hyfrjvq4OeKGBN54PKAd3J8M6SSIyjgIVkAoiBiQieqjww8DBX4HjfwJpibpjto645fccFmk64Kfg4ohN1i0tYmVpgbZV3dG3obfa+41bmhAZDwOSkTEgEVGOJN4Gji7RDcHdOKs/rPGog2NuXTH9uj+2hN0r4JalAp4P8FY9Sz6uDiZqNFHhxYBkZAxIRPRY5K/a0F26XqUz/97b0sTSBnHlO2CtVVtMOe+L6wn39nprUckNfRp6o2NND9hZW5mu7USFCAOSkTEgEVGuJdwCjq8AghYa1ioVd8dFr674ObYpll5yVJkqY/+3HvXKoW8jb1TxKGG6dhMVAgxIRsaARER5tlFu0CLg2FIg/rr+cIq7P3Y6dsLkKzURHGOjP17fxwW9A7zRtbYnnB3uHSeinGFAMjIGJCLKU+mpwLmNul6ls+sBja6AW2tliyivDlia2gKzwnyQrNEVcMsaS+2quaN7vbJoW600h+CIcogBycgYkIjIaOJvAMeXA0cWApHH9YfTHcvgWKnOmH27ATZcL6U/7lzMRm1t0rNeWQT4loSFBddWInoQBiQjY0Aionxx7ZiuV+nYMiDxlv5wUqmq2OvQFt9H1saR2JL6496liqFH3bKqZ8mvtKOJGk1kvhiQjIwBiYjyVVoKcG6Drl5JhuI0qfpTsW51sdmqJb67VhOXUu79fSQb5fao64Vn/L3g5pizRXCJCrsYBiTjYkAiIpOurXR6tW4mXOhOtRec0FpY4oZrQ6zRNMP0iBq4rSmuX4iydZXSqlfpqeoeKGbLeiUqumIYkIyLAYmIzEJsJHByJXBiBXDlgP6w1tIGl0s1w7LkRvj1enUkQreVSXFbK7Sv7qFqliQ02dswLFHREsOAZFwMSERkdm6HAif+0u0HF3lCf1hjXQzBzi0xPyYAK2OrIQU2+rDUoYYHnq7NsERFRwwDknExIBGRWYs6o+tVktlwEpzuSrMtgdOOzbEwxh+r4qohCbraJEc7a7Sv7s6wRIVeDAOScTEgEVGBIH/Fy8a5EpakdykuQn8qXXqWSjTB0ti6+DOuJuKg2/uNYYkKMwYkI2NAIqICR5MOXN6vK/CW252we6csbXG+RAMsi6+HFXG1cRtOBmFJVu5uxbBEhQADkpExIBFRgSZ/9cs+cBKUTv0D3Dx375SFFUId6+LPxPpYFlcXUSipD0ttqpZGx5pl1Fcne251QgUPA5KRMSARUaGrWVI9S38DEfdW7xaXi9fCqqQALEuoi8taD3XMxsoCTfxc8VQND3So7gEvl2ImajjR42FAMjIGJCIqtG5dBM6s0fUsXdlvcCrKoRI2ptXDn7E1EaStBA10e8PVKuuEp6qXUYGpumcJbndCZosBycgYkIioSIi5pgtLp/8BQncD2nT9qUSbkthnFYBlsTWxI722vsi7XMliqlepYw0PNKxQCjZWuhBFZA4YkIyMAYmIipyEW0DIJuDseuDcJiD5jv5UuoU1gu3qYGVCbaxPvTcUJxvptqvmrnqWpMhb6piITIkBycgYkIioSEtPBcL26sKS3G6GGJyOtPPFupS6+DfJH4e1lZEOK9haWaJRhVKqwLtNVXdULF2cQ3GU7xiQjIwBiYgokxshus10g9cBYYGAJk1/KsHKCbtRD6sTa2OHpjaiUUI/FNe2qrsKTE0rusLBlr1LZHwMSEbGgERE9ACJ0cD5zcDZDcC5/3Sb696lhQUu2FbB+sQa2JpWG0cyepesLdG4Qil9YKrgxt4lMg4GJCNjQCIieozFKVXd0kYg6qTB6STL4tiHWtiQXAs7NHVwRVtaHfd1dUCbKqXRppo7mvq5coFKyjMMSEbGgERElMtZcee36HqYzm8FEm8ZnL5qXQ6bkmtia3od7NVURyLsYWdtqYbgWlUujZaV3VDJ3ZG9S5RrDEhGxoBERJQHvUuymnfI3cAkPU2ZlhFIs7BBEKphY4qud+m01kc+tuBewg4tKrmhRWU3NK/kBg8ne5P+GFSwMCAZGQMSEVEeS7oDXNiuC0sSmjLtFSfuWLpgV1p17EyviT2amgjTuqvAVNndUYUlCU2N/Vy5lAA9FAOSkTEgEREZkXw0ydIBITIUtxkI3QWkJhhcEmVZGttTq2PP3cAUiVKwtrRAXW8XfWDy93bhQpVkgAHJyBiQiIjyUVoycOUgcHGH7nblAKBJNbjkkkVZ7JDApKmp6pduw0n1JjXxK6WG4qSOqYp7CVhasn6pKIthQDIuBiQiIhNKidett5QRmK4GqUUEMguGL3am1cBuTS0c0FRVW6G4ONio5QRko125VfVgYCpqYhiQjIsBiYjIjMhaS5f26MKS1DFdP21wOh2WOKUtj73p1bBfU00FJlmwUgJTo/L3AlO1MgxMhV0MA5JxMSAREZmxuKh7vUtyu33xvkvOar2xL72qCkz7NNURhZJq7zjpYZJibxmaq17GiYGpkGFAMjIGJCKiAiT6sm5ITnqZ5HYj+L5LwrQeqofpgLaqCkwyS865mK3aP05CU4PypVDTy4lF3wUcA5KRMSARERVgcdczBabdQOQJQKsxuCRSWxL7NPeG5M5py8HWxlrNkmtYXheY6vm4wMnexmQ/Bj0+BiQjY0AiIipkazDJQpUSliQ0hR++b5ZcLIrhSHolHNJUwSFtFQRpKiLewgHVyjihYfmSCPAtqYKTl0sxk/0Y9GgMSEbGgEREVIilJADhB4FL0su0C7hyCEiNN7hEAwsEa8rhsAQmTWUVmi5pPVDWxeFuWCqpepmqeJSAFeuYzAYDkpExIBERFSHpabqNdqWXSd32AdGX7rvsptZJF5buhqbjWj/Y2jmgro8L6nm7oJ5PSTVEV7K4rUl+DAIDkrExIBERFXGxEffCknyVfeXSUwwuSdVa4aS2PI5oKuGopiKCtBURqi2D8q7FVViSGqZ63iVRzbMEi7/zCQOSkTEgERHRfat9Xzt6NzDdDU1xkfddFq0tjmMaPxWWJDQd1VRCrHVJ1C7rrAtMd4OTpzNrmVDUA9KsWbMwZcoUREREwN/fHzNmzECjRo0eeP3y5csxbtw4hIaGonLlyvj666/x9NNP688PGjQICxYsMPieTp06Yf369frHt27dwsiRI7F69WpYWlqiV69e+P777+Ho6JijNjMgERHRQ8nHa3SYLiiFH9LdJEClJ9936RWtmyr61gWmijiurQBnJxc1HCfDc3XKOaNWWWfOmCtKAWnp0qUYMGAAZs+ejcaNG2PatGkqAAUHB8PdXXZqNrRnzx60atUKEydOxDPPPINFixapgHT48GHUqlVLH5AiIyMxb948/ffZ2dmhZMmS+sddunTBtWvX8NNPPyE1NRWDBw9Gw4YN1fPlBAMSERE9trQUIOqUrgBcZsqFH4L2ejAssmyTkq61UAtZSmg6pvXDcU0F9bhcaRfUKeuMOuV0oammlzOK2VqZ7McpiApMQJJQJMFk5syZ6rFGo4G3t7fq3fnggw/uu75Pnz6Ij4/HmjVr9MeaNGmCunXrqpCVEZCio6OxatWqbF/z9OnTqFGjBg4cOIAGDRqoY9K7JL1QV65cgZeX1yPbzYBERER5IikGuHrkXi+TBKfYq/ddlqK1QrDWW4WlE3dD0zl4o7xHKTU8V8dbF56knsnOmqHpST+/rWFCKSkpOHToED788EP9MRnu6tChAwIDA7P9Hjk+ZsyY+4bPsoahbdu2qR4o6TVq164dvvjiC7i6uuqfw8XFRR+OhLymvPa+ffvQo0eP+143OTlZ3TK/wURERE/M3gnwa627ZYi5qgtLVw7qir+vBsE2KRq1LUJR2zIUwFZ9aDp7yxvHb1TAiaAKWK6pgPOWPvAr46Z6mDJ6mWSpAVtrFoE/DpMGpBs3biA9PR0eHh4Gx+XxmTNnsv0eqVPK7no5nqFz587o2bMnKlSogPPnz+Ojjz5SQ2oSjKysrNS1WYfvrK2tUapUKYPnyUyG9D799NMn+GmJiIhyyMlLd6v+bKZ6pksqKGUEJvlqm3gbtSxCUStTaJKZc2evl8PxyAo4frAClmjKq9Dk7VFabZUigalWWSdU93SCg61JY4BZK5TvTN++ffX3a9eujTp16qBixYqqV6l9+/a5ek7p5crccyU9SDIUSEREZHQWFkDJ8rpbze6GReBS+H03NGmvBcEm4SZqWlxCTUtZp2mbulSjtcDFG2Vw6rovTh0pjy1aX5zS+qKEW1nU8nLWByf5yjWazCAgubm5qR4dKajOTB6XKVMm2++R449zvfDz81OvFRISogKSXBsVFWVwTVpamprZ9qDnkSJvuREREZlPaPLV3Wp00x2S0HTnSqZepqPQRhyHZVwEKlpcQ0Vcw7NWe/VPcT3GCaejfXHqZHks0/jipNYXKU4VUK1sSX1oqu5ZAmVdisFCXq8IMWlAsrW1RUBAADZv3ozu3bvri7Tl8Ztvvpnt9zRt2lSdHzVqlP7Yxo0b1fEHkcLrmzdvwtPTU/8cUsQt9U/y+mLLli3qtaVonIiIqECSEOPirbvdHZ5TsSYuCog4bnDT3jyH0ohBaavjaIXj+qdITLJFcIg3Tp31xXatL37WeCPcrgLKlfFUBeCy95yEpqplShTqITqzmOY/cOBANd1e1j6Saf7Lli1TNUhSWyRLAJQtW1bVAGVM82/dujUmTZqErl27YsmSJfjqq6/00/zj4uJUrZCsayS9QVKD9N577yE2NhbHjx/X9wJJTZL0PMnMt4xp/lK0zWn+RERUZPabizoNRBy7F5oiT8AiNSHby8O1rgjWeKuZdGc03jgLH6SVrIRKnqX0oUnqmsqVNO/epgIxiy1j2v7169cxfvx4VSAt0/Vlyn1GIXZYWJiaXZahWbNmKsSMHTtWFV/LQpEygy1jDSQZsjt27JhaKFJ6iWTKfseOHfH5558bDJEtXLhQ9VLJkFvGQpHTp083wTtARERkArYOQLkA3e0uC006cOvi3dB0DIg8CW3kSVjEhKOsxU2UtbqJdgjSX58aZ4XzZ70QHCxrNnljidYbYTZ+cPEoj2peTqhaxglVPUqgiocjXBwKVm2TyXuQCir2IBERUZGRGK3rbYo8oVvoMvIUNJEnYZkSm+3lMVoHBGvL4azGG+e0ZXFWWw63i/vBzcMbVTJCU5kSqOzuiOJ2+dtXU2AWiiyoGJCIiKhI094tCI88CUSdVKFJeptw8xwsNGnZfsttraMKTOc05VRokvvxzpVQ2sMblfW9TSVQ0b240Ra7ZEAyMgYkIiKiB2yncvOcLjhdPwNEnUF61ClY3g69b0uVzMFJAlOIRtfbdB7lkORSGW91a45WVe/fdqxI1CARERFRIWJtC3jU1N3uUn1BqYnAjXO60JQRnCJPwTI6FCUt4tDY4gwaW2ZaJDoeOB8+Hag60DQ/hklelYiIiIoWm2KAZx3d7UHBKeo0tNclOJ2GVXQovCrVNllzGZCIiIjIbIKTRUY4SU1EMSvTzXxjQCIiIiLzDE4mxK19iYiIiLJgQCIiIiLKggGJiIiIKAsGJCIiIqIsGJCIiIiIsmBAIiIiIsqCAYmIiIgoCwYkIiIioiwYkIiIiIiyYEAiIiIiyoIBiYiIiCgLBiQiIiKiLBiQiIiIiLKwznqAckar1aqvMTExpm4KERER5VDG53bG5/iDMCDlUmxsrPrq7e1t6qYQERFRLj7HnZ2dH3jeQvuoCEXZ0mg0uHr1KkqUKAELC4v70qkEp8uXL8PJyclkbSxo+L49Pr5nucP3LXf4vj0+vmfm975J7JFw5OXlBUvLB1casQcpl+RNLVeu3EOvkT9U/g/x+Pi+PT6+Z7nD9y13+L49Pr5n5vW+PaznKAOLtImIiIiyYEAiIiIiyoIByQjs7OwwYcIE9ZVyju/b4+N7ljt833KH79vj43tWcN83FmkTERERZcEeJCIiIqIsGJCIiIiIsmBAIiIiIsqCAYmIiIgoCwakPDZr1iyUL18e9vb2aNy4Mfbv32/qJpm1Tz75RK1EnvlWrVo1UzfL7OzYsQPPPvusWvlV3qNVq1YZnJe5FuPHj4enpyeKFSuGDh064Ny5cyjqHvW+DRo06L7fv86dO6MomzhxIho2bKh2CXB3d0f37t0RHBxscE1SUhJGjBgBV1dXODo6olevXoiMjERRlpP3rU2bNvf9vr322msoyn788UfUqVNHvyBk06ZNsW7dOrP4XWNAykNLly7FmDFj1NTEw4cPw9/fH506dUJUVJSpm2bWatasiWvXrulvu3btMnWTzE58fLz6fZIAnp3Jkydj+vTpmD17Nvbt24fixYur3z35y6Uoe9T7JiQQZf79W7x4MYqy7du3qw+kvXv3YuPGjUhNTUXHjh3Ve5lh9OjRWL16NZYvX66ul22XevbsiaIsJ++bGDZsmMHvm/y/W5SVK1cOkyZNwqFDh3Dw4EG0a9cOzz33HE6ePGn63zWZ5k95o1GjRtoRI0boH6enp2u9vLy0EydONGm7zNmECRO0/v7+pm5GgSL/265cuVL/WKPRaMuUKaOdMmWK/lh0dLTWzs5Ou3jxYhO10vzfNzFw4EDtc889Z7I2FQRRUVHqvdu+fbv+d8vGxka7fPly/TWnT59W1wQGBpqwpeb9vonWrVtr//e//5m0XQVByZIltb/88ovJf9fYg5RHUlJSVAKWoY3M+7XJ48DAQJO2zdzJUJAMgfj5+aF///4ICwszdZMKlIsXLyIiIsLgd0/2GZIhXv7uPdq2bdvUkEjVqlXx+uuv4+bNm6Zuklm5c+eO+lqqVCn1Vf6ek96RzL9vMizu4+PD37eHvG8ZFi5cCDc3N9SqVQsffvghEhISTNRC85Oeno4lS5aoXjcZajP17xo3q80jN27cUH+4Hh4eBsfl8ZkzZ0zWLnMnH+Lz589XH07S3fzpp5+iZcuWOHHihBrLp0eTcCSy+93LOEcPHl6T7voKFSrg/Pnz+Oijj9ClSxf1l6+VlRWKOo1Gg1GjRqF58+bqA13I75StrS1cXFwMruXv28PfN9GvXz/4+vqqfxAeO3YM77//vqpT+uuvv1CUHT9+XAUiKQmQOqOVK1eiRo0aCAoKMunvGgMSmZR8GGWQQj0JTPIXyLJlyzB06FCTto0Kv759++rv165dW/0OVqxYUfUqtW/fHkWd1NTIP1ZYF5g379vw4cMNft9kUoX8nkk4l9+7oqpq1aoqDEmv24oVKzBw4EBVb2RqHGLLI9JlKv/izFpdL4/LlCljsnYVNPIvhSpVqiAkJMTUTSkwMn6/+Lv35GSYV/5f5u8f8Oabb2LNmjXYunWrKqTNIL9TUlIQHR1tcD1/3x7+vmVH/kEoivrvm62tLSpVqoSAgAA1G1AmVnz//fcm/11jQMrDP2D5w928ebNBN6s8lq5Dypm4uDj1ryn5lxXljAwPyV8WmX/3YmJi1Gw2/u49nitXrqgapKL8+yf17PIhL8McW7ZsUb9fmcnfczY2Nga/bzJMJLWDRfn37VHvW3ak10QU5d+37MhnZ3Jyssl/1zjElodkir90DTZo0ACNGjXCtGnTVLHZ4MGDTd00s/XOO++odWpkWE2mb8oSCdIT9+KLL5q6aWYXHDP/K1MKs+UvVykAlYJFqXf44osvULlyZfUX87hx41Sdg6zFUpQ97H2Tm9S8yboqEjAlmL/33nvqX7KyREJRHh5atGgR/v77b1UHmFHrIYX/ssaWfJXhb/n7Tt5DWbtm5MiR6gOrSZMmKKoe9b7J75ecf/rpp9WaPlKDJFPYW7VqpYZ2i6oPP/xQlVrI32OxsbHqPZIh7g0bNpj+d83o8+SKmBkzZmh9fHy0tra2atr/3r17Td0ks9anTx+tp6ener/Kli2rHoeEhJi6WWZn69atampr1ptMU8+Y6j9u3Dith4eHmt7fvn17bXBwsLaoe9j7lpCQoO3YsaO2dOnSaiqxr6+vdtiwYdqIiAhtUZbd+yW3efPm6a9JTEzUvvHGG2o6toODg7ZHjx7aa9euaYuyR71vYWFh2latWmlLlSql/h+tVKmS9t1339XeuXNHW5QNGTJE/b8nnwHy/6L83fXff/+Zxe+ahfzH+DGMiIiIqOBgDRIRERFRFgxIRERERFkwIBERERFlwYBERERElAUDEhEREVEWDEhEREREWTAgEREREWXBgERElEcsLCywatUqUzeDiPIAAxIRFQqDBg1SASXrrXPnzqZuGhEVQNyLjYgKDQlD8+bNMzhmZ2dnsvYQUcHFHiQiKjQkDMnGs5lvJUuWVOekN+nHH39UG2PK5qF+fn5YsWKFwfcfP34c7dq1U+dlQ9Hhw4erDW8zmzt3LmrWrKleS3Zhlx3cM7tx4wZ69OgBBwcHtXnwP//8kw8/ORHlNQYkIioyxo0bh169euHo0aPo378/+vbti9OnT6tz8fHx6NSpkwpUBw4cwPLly7Fp0yaDACQBS3Ztl+AkYUrCT6VKlQxe49NPP8ULL7ygdmuXndvldW7dupXvPysRPaF82RKXiMjIBg4cqLWystIWL17c4Pbll1+q8/LX3WuvvWbwPY0bN9a+/vrr6v7PP/+sdgyPi4vTn//333+1lpaW2oiICPXYy8tL+/HHHz+wDfIaY8eO1T+W55Jj69aty/Ofl4iMizVIRFRotG3bVvXyZFaqVCn9/aZNmxqck8dBQUHqvvQk+fv7o3jx4vrzzZs3h0ajQXBwsBqiu3r1Ktq3b//QNtSpU0d/X57LyckJUVFRT/yzEVH+YkAiokJDAknWIa+8InVJOWFjY2PwWIKVhCwiKlhYg0RERcbevXvve1y9enV1X75KbZLUImXYvXs3LC0tUbVqVZQoUQLly5fH5s2b873dRJT/2INERIVGcnIyIiIiDI5ZW1vDzc1N3ZfC6wYNGqBFixZYuHAh9u/fj19//VWdk2LqCRMmYODAgfjkk09w/fp1jBw5Ei+//DI8PDzUNXL8tddeg7u7u5oNFxsbq0KUXEdEhQsDEhEVGuvXr1dT7zOT3p8zZ87oZ5gtWbIEb7zxhrpu8eLFqFGjhjon0/I3bNiA//3vf2jYsKF6LDPepk6dqn8uCU9JSUn47rvv8M4776jg1bt373z+KYkoP1hIpXa+vBIRkQlJLdDKlSvRvXt3UzeFiAoA1iARERERZcGARERERJQFa5CIqEhgNQERPQ72IBERERFlwYBERERElAUDEhEREVEWDEhEREREWTAgEREREWXBgERERESUBQMSERERURYMSERERERZMCARERERwdD/ASahpBSqbzKDAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVnpJREFUeJzt3Qd4lFXaxvEnvZEQIJAA0kIHaYIgFnClKRbAAoq7ILooKIqyFlCkuYplQRD57KCLNJWi664ogohI713pSA01CQnp813PgYmpkBmSvFP+v+saM+WdycnJyNw55znn9bHZbDYBAADwIr5WNwAAAKC0EYAAAIDXIQABAACvQwACAABehwAEAAC8DgEIAAB4HQIQAADwOgQgAADgdQhAAADA6xCAAACA1yEAAcjFx8enSJclS5Zc8fdKTk6WUaNGOfVa//vf/0w7qlSpIllZWVfcFgDexd/qBgBwLdOmTct1+9///rcsXLgw3/0NGzYslgA0evRoc/3mm2926LnTp0+XmjVryv79+2Xx4sXSsWPHK24PAO9BAAKQy1//+tdct1euXGkCUN77rZSUlCRff/21jB07VqZOnWrCkKsGIG1rWFiY1c0AkAdTYAAcplNOEyZMkMaNG0twcLBER0fLY489JmfOnMl13Nq1a6VLly4SFRUlISEhUqtWLXn44YfNYzpyU7FiRXNdR4HsU2s6JXY58+bNk/Pnz8t9990n999/v8ydO1dSUlLyHaf36evVq1fPtLNy5cpy9913y549e3L9LBMnTpQmTZqYY7RNt956q2m7vZ3ark8//TTf6+dtr17X+7Zv3y69e/eWcuXKyY033mge27x5szz00EMSGxtrvk9MTIzpi1OnTuV73cOHD8sjjzxipveCgoJMvw0cOFDS0tJk79695nu8/fbb+Z63fPly89jMmTMv24eAt2MECIDDNOxoIOjXr5889dRTsm/fPnn33Xdlw4YN8uuvv0pAQIDExcVJ586dTaAYOnSoREZGmjChYUXp/e+99575YO/Ro4cJJqpp06aX/f464vOXv/zFhAgNQPr6//nPf0wgssvMzJQ77rhDFi1aZI4ZPHiwJCYmmtGsrVu3Su3atc1xGjT0Z7ntttvk73//u2RkZMgvv/xiRr5atWrlVP9oO+rWrSuvvfaa2Gw2c59+Xw0v2mfa7m3btsmHH35ovur30uCijhw5Iq1bt5azZ8/Ko48+Kg0aNDCB6KuvvjJThhqgbrjhBtMHzzzzTL5+CQ8Pl27dujnVbsCr2ADgEp544gn9BM++/csvv5jb06dPz3XcggULct0/b948c3vNmjWFvvaJEyfMMSNHjixye44fP27z9/e3ffTRR9n3XX/99bZu3brlOm7KlCnmtcePH5/vNbKysszXxYsXm2OeeuqpQo/Zt2+fOWbq1Kn5jsnbdr2u9z3wwAP5jk1OTs5338yZM83xS5cuzb6vT58+Nl9f3wL7zd6mDz74wDxvx44d2Y+lpaXZoqKibH379s33PAD5MQUGwCFffvmllC1bVjp16iQnT57MvrRs2VLKlCkjP/30kzlOR3zUt99+K+np6cX2/WfNmiW+vr5yzz33ZN/3wAMPyHfffZdrCm7OnDlm6u3JJ5/M9xr20RY9Rq+PHDmy0GOcMWDAgHz36RRgzqk57bPrrrvO3F6/fn32dNz8+fPlzjvvLHD0yd6mnj17mmk0HfGx+/77781rulKtFuDKCEAAHLJr1y6Jj4+XSpUqmWmsnJdz586ZqS/Vvn17E1K0vkeDiE7LaMFyamrqFX3/zz//3EwRae3M7t27zaVFixamPkbDmZ3W+dSvX1/8/Quf6ddjtM6mfPnyUpy0Ziev06dPm2k4rZfSMKT9ZT9O+1OdOHFCEhIS5Oqrr77k62u41JA0Y8aM7Ps0DFWtWlVuueWWYv1ZAE9FDRAAh+gohYafnKMPOdkLm3W0QutWtL5F63N0hEKLfseNG2fu09EiZ8LXmjVrzHWtsclL26R1M8WpsJEgrTEqTM7RHjsdtdEi5eeee06aN29ufn7tSy24dmYfoz59+pjAp6+pBdzffPONPP7442Z0DMDlEYAAOESLh3/88UdTiFvQB31eOs2jl1dffdWMWDz44INmGksLjh2dZtKAowXWuieRn59frseWLVsm77zzjhw8eFCqV69u2rlq1Soz/abPKexn0WCmozOFjQLpSi6lRck5HThwoMjt1qk5LcbW0bARI0bkCnR5w2NERIQp0r4cDU56vPZJmzZtTIH03/72tyK3CfB2/KkAwCE6kqGjH6+88kq+x3QFlT0o6Ie+fQWUnY58KPs0WGhoaIHhojD6YX/TTTdJr1695N5778110ZEVZV8CrtNvWhOjq9PysrdLj9Hr9s0YCzpGA4lO4S1dujTX4//3f/8nRWUPa3n7Q7cSyElHb7p3725GzOzL8Atqk9KpPa19+uKLL8wqNh0FKsoKOgAXMAIEwCFa26PL4HUTwo0bN5ql7jrCoqMZOiWje+poIPnss89MSNAl7jrSokvQP/roIxMounbtal5LR5AaNWoks2fPNnv16CiM1r8UVAOjozla7zNo0KAC26X1L9dcc40JSS+88IKZItJdrIcMGSKrV682wUk3JdTRK50q0pokXUqvoyY6cqTtt09H6TJ4fcz+vXS06vXXXzdftThZw9Dvv/9e5D7Tn7ldu3by5ptvmhEpbesPP/xgtg/IS5fO62PazzqdpztuHz161PStjnLZi8uV/ozadi08f+ONN4rcHgAsgwfg4DJ4uw8//NDWsmVLW0hIiC08PNzWpEkT2/PPP287cuSIeXz9+vVmOXj16tVtQUFBtkqVKtnuuOMO29q1a3O9zvLly83rBAYGXnJJ/JNPPmke37NnT6FtHTVqlDlm06ZN2UvPX3rpJVutWrVsAQEBtpiYGNu9996b6zUyMjJsb731lq1BgwamDRUrVrTddttttnXr1mUfo6/zyCOP2MqWLWt+1p49e9ri4uIKXQavy/vzOnTokK1Hjx62yMhI8zr33Xef6auCfuYDBw6Y5fDaFu272NhY83tITU3N97qNGzc2y+b19QEUnY/+x+oQBgBwjq6A05EzrTECUHTUAAGAm9I6IZ2G1KkwAI5hBAgA3IyuElu3bp3ZUkALvfUUG7oxIoCiYwQIANyM7q+k5xTTgmpd9Ub4ARzHCBAAAPA6jAABAACvQwACAABeh40QC6AboR05ckTCw8Ov6IzQAACg9GhVj266qic5vtx58QhABdDwU61aNaubAQAAnPDHH3/IVVdddcljCEAF0JEfewfqFvY56aoL3abevv0/ioZ+cw795jj6zDn0m3PoN9fqt4SEBDOAYf8cvxQCUAHs014afgoKQHoCR72fN3vR0W/Ood8cR585h35zDv3mmv1WlPIViqABAIDXIQABAACvQwACAABehxqgK5CZmWnmMXF52k/+/v6SkpJi+s1b6Vy3n5+f1c0AAK9HAHLS8ePHzV4DKPreDDExMWZlnbfvrRQZGWn6wtv7AQCsRABygi6v06V20dHRpoqdD7KibS557tw5KVOmzGU3p/LkEJicnCxxcXHmduXKla1u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8803pfCTAygJBCAAHuHll1+We+65RzZt2iQPPvig3H///bJjxw7zWFJSknTp0sUEpjVr1siXX34pP/74Y66AowHqiSeeMMFIw5KGmzp16uT6HqNHj5aePXvK5s2bpWvXrub7nD59utR/VgDFoNROuwoATtIzvPv5+dnCwsJyXV599VXzuP5TNmDAgFzPadOmjW3gwIHm+ocffmjOOH3u3Lnsx//73//afH19s88QX6VKFdtLL71UaBv0ewwfPjz7tr6W3vfdd98V+88LoORRAwTALfzlL38xozQ5lS9fPvt627Ztcz2mtzdu3Giu60hQs2bNJCwsLPvxG264QbKysuS3334zU2hHjhyRDh06XLINTZs2zb6urxURESFxcXFX/LMBKH0EIABuQQNH3imp4qJ1QUUREBCQ67YGJw1RANwPNUAAPMLKlSvz3W7YsKG5rl+1Nkhrgex+/fVX8fX1lfr160t4eLjUrFlTFi1aVOrtBmANRoAAuIXU1FQ5duxYrvv8/f0lKirKXNfC5latWsmNN94o06dPl9WrV8snn3xiHtNi5ZEjR0rfvn1l1KhRcuLECXnyySflb3/7m0RHR5tj9P4BAwZIpUqVzGqyxMREE5L0OACehwAEwC0sWLDALE3PSUdvdu7cmb1Ca9asWfL444+b42bOnCmNGjUyj+my9e+//14GDx4s1157rbmtK8bGjx+f/VoajlJSUuTtt9+WZ5991gSre++9t5R/SgClxUcroUvtuwFACdBanHnz5kn37t2tbgoAN0ENEAAA8DoEIAAA4HWoAQLg9pjJB+AoRoAAAIDXIQABAACvQwACAABehwAEAAC8DgEIAAB4HQIQAADwOgQgAADgdQhAAADA6xCAAACA1/l/+WUGXpuxDaYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "batch_size = 50\n",
    "lr = 0.001\n",
    "loss_func = torch.nn.BCEWithLogitsLoss()\n",
    "epoch_num = 30\n",
    "\n",
    "train_iter, test_iter = make_classify_dataset()\n",
    "net = Forward_Net(200, 100, 1)\n",
    "\n",
    "train_loss, test_loss, test_acc = [], [], []\n",
    "for epoch in range(epoch_num):\n",
    "    train_loss_epoch = 0\n",
    "    for x, y in train_iter:\n",
    "        pred = net(x)\n",
    "        loss = loss_func(pred, y.unsqueeze(1))\n",
    "        loss.backward()\n",
    "        sgd(net.params, lr, batch_size)\n",
    "        train_loss_epoch += loss.item()\n",
    "    train_loss.append(train_loss_epoch / len(train_iter))\n",
    "    test_loss.append(calc_net_loss(net, test_iter, loss_func))\n",
    "    test_acc.append(calc_net_acc(net, test_iter))\n",
    "    print(f\"Epoch {epoch+1}, Train Loss: {train_loss[-1]}, Test Loss: {test_loss[-1]}, Test Acc: {test_acc[-1]}\")\n",
    "\n",
    "# 损失曲线\n",
    "plt.plot(range(1, epoch_num+1), train_loss, label='Train Loss')\n",
    "plt.plot(range(1, epoch_num+1), test_loss, label='Test Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Training and Test Loss')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "# 测试准确率\n",
    "plt.plot(range(1, epoch_num+1), test_acc, label='Test Accuracy')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.title('Test Accuracy')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验结果分析：随着epoch增加，模型在训练集和测试集上的loss都逐渐降低，说明模型在二分类任务的学习中逐渐优化，并且模型的学习速度也是较快的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务三：手动实现前馈神经网络解决多分类问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch import Tensor\n",
    "\n",
    "def calc_net_loss(net: Forward_Net, test_iter: DataLoader, loss_func: torch.nn.Module):\n",
    "    net.eval()\n",
    "    loss_sum = 0\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_iter:\n",
    "            x = x.view(-1, 28*28)\n",
    "            pred:Tensor = net(x)\n",
    "            loss = loss_func(pred, y)\n",
    "            loss_sum += loss.item()\n",
    "    return loss_sum / len(test_iter)\n",
    "\n",
    "def calc_net_acc(net: Forward_Net, test_iter: DataLoader):\n",
    "    net.eval()\n",
    "    correct_predictions = 0\n",
    "    total_samples = 0\n",
    "    with torch.no_grad():\n",
    "        for x, y in test_iter:\n",
    "            x = x.view(-1, 28*28)\n",
    "            pred:Tensor = net(x)\n",
    "            predicted_labels = pred.argmax(dim=1).long()\n",
    "            correct_predictions += (predicted_labels == y.long()).sum().item()\n",
    "            total_samples += y.size(0)\n",
    "    return correct_predictions / total_samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1, Train Loss: 2.0311978491465252, Test Loss: 1.7203397004368206, Test Acc: 0.6169\n",
      "Epoch 2, Train Loss: 1.5118866578420003, Test Loss: 1.302172949519782, Test Acc: 0.7379\n",
      "Epoch 3, Train Loss: 1.1854246549924214, Test Loss: 1.04221810129123, Test Acc: 0.7854\n",
      "Epoch 4, Train Loss: 0.9803962494850159, Test Loss: 0.8778210047144479, Test Acc: 0.8107\n",
      "Epoch 5, Train Loss: 0.8470211237589518, Test Loss: 0.7684111496130117, Test Acc: 0.8292\n",
      "Epoch 6, Train Loss: 0.7555449597835541, Test Loss: 0.691723952135339, Test Acc: 0.845\n",
      "Epoch 7, Train Loss: 0.6894535228729248, Test Loss: 0.6350994686158701, Test Acc: 0.8564\n",
      "Epoch 8, Train Loss: 0.6395265071074168, Test Loss: 0.5917038447178972, Test Acc: 0.8635\n",
      "Epoch 9, Train Loss: 0.6004983925501506, Test Loss: 0.5573420871656162, Test Acc: 0.869\n",
      "Epoch 10, Train Loss: 0.5691335016727448, Test Loss: 0.5295421573253104, Test Acc: 0.8737\n",
      "Epoch 11, Train Loss: 0.5433208794593811, Test Loss: 0.5064760827884888, Test Acc: 0.8782\n",
      "Epoch 12, Train Loss: 0.5217207664410273, Test Loss: 0.48691143995275893, Test Acc: 0.8802\n",
      "Epoch 13, Train Loss: 0.5033275487661362, Test Loss: 0.47031860903333933, Test Acc: 0.883\n",
      "Epoch 14, Train Loss: 0.4874454161485036, Test Loss: 0.4560058837691054, Test Acc: 0.8853\n",
      "Epoch 15, Train Loss: 0.47360127943356833, Test Loss: 0.44339169730869726, Test Acc: 0.8878\n",
      "Epoch 16, Train Loss: 0.4613838358799616, Test Loss: 0.43217347329036115, Test Acc: 0.8902\n",
      "Epoch 17, Train Loss: 0.450528551197052, Test Loss: 0.42240896766273356, Test Acc: 0.8903\n",
      "Epoch 18, Train Loss: 0.44078958729108175, Test Loss: 0.41353831480676756, Test Acc: 0.892\n",
      "Epoch 19, Train Loss: 0.43201236765384676, Test Loss: 0.40546118096707345, Test Acc: 0.8926\n",
      "Epoch 20, Train Loss: 0.4239915560801824, Test Loss: 0.3979796507892708, Test Acc: 0.8944\n",
      "Epoch 21, Train Loss: 0.4167265283107758, Test Loss: 0.39135621033442286, Test Acc: 0.895\n",
      "Epoch 22, Train Loss: 0.4100091745654742, Test Loss: 0.38525949635159096, Test Acc: 0.8961\n",
      "Epoch 23, Train Loss: 0.40380721593697866, Test Loss: 0.3795162185479086, Test Acc: 0.8971\n",
      "Epoch 24, Train Loss: 0.39804433081150054, Test Loss: 0.37434766710566253, Test Acc: 0.899\n",
      "Epoch 25, Train Loss: 0.39271991692384084, Test Loss: 0.36942984825506, Test Acc: 0.8999\n",
      "Epoch 26, Train Loss: 0.3877350548148155, Test Loss: 0.36477512854356736, Test Acc: 0.9005\n",
      "Epoch 27, Train Loss: 0.38303728275696436, Test Loss: 0.36050145949323337, Test Acc: 0.9013\n",
      "Epoch 28, Train Loss: 0.37865551400582, Test Loss: 0.3565093970384461, Test Acc: 0.9025\n",
      "Epoch 29, Train Loss: 0.3745117662350337, Test Loss: 0.35278897343304594, Test Acc: 0.9028\n",
      "Epoch 30, Train Loss: 0.37057994790474574, Test Loss: 0.3491882676014695, Test Acc: 0.9048\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYrhJREFUeJzt3Qd4U+X+B/Bv9550QxlllL2HKCoKMuSPgorg9Qo4r7jFyfUK4sKJCxQ3uFgy3CAgICDIll02ZbWllO7d5v/83pOEpKS7zWi+n+c55pyTk/RNGpqv73TR6XQ6EBERETkRV1sXgIiIiMjaGICIiIjI6TAAERERkdNhACIiIiKnwwBERERETocBiIiIiJwOAxARERE5HQYgIiIicjoMQEREROR0GICInMz48ePRvHnzGj32hRdegIuLCxqy48ePq9c4e/ZsWxeFiOoRAxCRnZAv3apsa9assXVRnZ4EyKr8ruoqRL366qtYunRptQLcW2+9VSc/m6ihcrd1AYhI8/XXX5sdf/XVV1ixYsUl59u1a1ern/Ppp5+itLS0Ro/93//+h2effRbO7t1330V2drbx+Ndff8XcuXPxzjvvICwszHj+8ssvr7MAdMstt2DEiBF18nxExABEZDf+/e9/mx1v2rRJBaCy58vKzc2Fr69vlX+Oh4dHjcvo7u6uNmdXNogkJSWpACTna9q8SETWxSYwIgfSv39/dOzYEdu2bcNVV12lgs9///tfdd8PP/yAYcOGISYmBl5eXmjZsiVeeukllJSUVNgHyLTJ5JNPPlGPk8f36tULW7ZsqbQPkBw/9NBDqolGyiaP7dChA5YtW3ZJ+aX5rmfPnvD29lY/5+OPP65yv6J169Zh1KhRaNq0qfoZsbGxePzxx5GXl3fJ6/P398fp06dVIJH98PBwPPnkk5e8F+np6er6oKAgBAcHY9y4cepcXfnmm2/Qo0cP+Pj4IDQ0FGPGjMHJkyfNrjl06BBuvvlmREVFqfelSZMm6rqMjAx1v7w3OTk5mDNnjrFpTcpcWykpKbj77rsRGRmpfm6XLl3Uzyhr3rx56jUEBAQgMDAQnTp1wnvvvWe8v6ioCFOnTkXr1q3V8zRq1Aj9+vVT4Z3InvF/5YgczPnz5zF06FD1JSm1Q/IFJqS/iXzZT5w4Ud3+8ccfmDx5MjIzM/Hmm29W+rzfffcdsrKy8J///Ed9yb7xxhu46aabcPTo0UprjdavX4/FixfjgQceUF+U77//vvpST0xMVF+IYseOHRgyZAiio6PVF6aEkRdffFGFk6pYuHChqu2aMGGCes7Nmzfjgw8+wKlTp9R9puS5Bw8ejD59+qhgt3LlSrz99tsqdMnjhU6nw4033qjKfv/996umxSVLlqgQVBdeeeUVPP/887j11ltxzz334Ny5c6q8ElzlvZDAVVhYqMpZUFCAhx9+WIUgCW4///yzCmISzKQJVB7fu3dv3Hfffeq55XXUhoRGCdOHDx9W4bVFixbqPZRgJT/30UcfVddJiLntttswYMAAvP766+rc/v37sWHDBuM1EmCnTZtmLKN83rZu3Yrt27fjuuuuq/X7SFRvdERklx588EFd2X+iV199tTo3a9asS67Pzc295Nx//vMfna+vry4/P994bty4cbpmzZoZj48dO6aes1GjRrq0tDTj+R9++EGd/+mnn4znpkyZckmZ5NjT01N3+PBh47l//vlHnf/ggw+M54YPH67Kcvr0aeO5Q4cO6dzd3S95Tkssvb5p06bpXFxcdCdOnDB7ffJ8L774otm13bp10/Xo0cN4vHTpUnXdG2+8YTxXXFysu/LKK9X5L7/8UldVb775pnqMvJfi+PHjOjc3N90rr7xidt3u3bvV6zWc37Fjh3rcwoULK3x+Pz8/9bqqwvD7lDKV591331XXfPPNN8ZzhYWFur59++r8/f11mZmZ6tyjjz6qCwwMVO9Lebp06aIbNmxYlcpGZE/YBEbkYKT5584777zkvDSzGEhNTmpqKq688kpVa3LgwIFKn3f06NEICQkxHstjhdQAVWbgwIFmtRKdO3dWzSWGx0qNjNTCSJOUNNEZtGrVStVmVYXp65MmIXl90slYMpjUqJQltTqm5PWYvhbpuCz9mQw1QsLNzU3VxNSW1IZJR3Op/ZFyGjap4ZGmotWrV6vrpIZHLF++XP2erEVeu5RFancMpJbvkUceUZ27165dq85JLZW81xU1Z8k1e/fuVU15RI6EAYjIwTRu3Bienp6XnJcvoZEjR6ovVQkf0rRk6EBt6E9SEelbY8oQhi5cuFDtxxoeb3is9DeRZhcJPGVZOmeJNKdJE430pTH067n66qstvj7pi1K2ac20POLEiROqOU6ey1R8fDxqS8KABDMJO1IO002akOT9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s2effVaNlJP3RP52ybGLi4vu999/t4vPGgNQNX3wwQfqF+bp6amGxW/atMnWRbJbo0eP1kVHR6v3qnHjxupY/lCQudWrV6sv8LKbDOM2DIV//vnndZGRkSqADxgwQJeQkKBzdhW9b/LFNGjQIF14eLgaatusWTPdvffe6/T/s2Lp/ZLtyy+/NF4jwfqBBx5Qw5V9fX11I0eOVF/2zqyy9y0xMVGFndDQUPVvtFWrVrqnnnpKl5GRoXNmd911l/q3J98B8m9R/nYZwo89fNZc5D/WqWsiIiIisg/sA0REREROhwGIiIiInA4DEBERETkdBiAiIiJyOgxARERE5HQYgIiIiMjpMAARERGR02EAIiKqAhcXFyxdutTWxSCiOsIARER2b/z48SqAlN2GDBli66IRkYNyt3UBiIiqQsLOl19+aXbOy8vLZuUhIsfGGiAicggSdqKiosy2kJAQdZ/UBn300UcYOnQofHx8EBcXh++//97s8bt378a1116r7m/UqBHuu+8+ZGdnm13zxRdfoEOHDupnySresgK4qdTUVIwcORK+vr5o3bo1fvzxRyu8ciKqDwxARNQgPP/887j55pvxzz//4Pbbb8eYMWOwf/9+dV9OTg4GDx6sAtOWLVuwcOFCrFy50izgSIB68MEHVTCSsCThplWrVmY/Y+rUqbj11luxa9cuXH/99ernpKWlWf21ElEdsNqyq0RENSQrvLu5uen8/PzMtldeeUXdL3/K7r//frPH9OnTRzdhwgS1/8knn6gVp7Ozs433//LLLzpXV1fjCvExMTG65557rtwyyM/43//+ZzyW55Jzv/32W52/XiKqf+wDREQO4ZprrlG1NKZCQ0ON+3379jW7T4537typ9qUmqEuXLvDz8zPef8UVV6C0tBQJCQmqCe3MmTMYMGBAhWXo3LmzcV+eKzAwECkpKbV+bURkfQxAROQQJHCUbZKqK9IvqCo8PDzMjiU4SYgiIsfDPkBE1CBs2rTpkuN27dqpfbmVvkHSF8hgw4YNcHV1RXx8PAICAtC8eXOsWrXK6uUmIttgDRAROYSCggIkJSWZnXN3d0dYWJjal47NPXv2RL9+/fDtt99i8+bN+Pzzz9V90ll5ypQpGDduHF544QWcO3cODz/8MO644w5ERkaqa+T8/fffj4iICDWaLCsrS4UkuY6IGh4GICJyCMuWLVND001J7c2BAweMI7TmzZuHBx54QF03d+5ctG/fXt0nw9aXL1+ORx99FL169VLHMmJs+vTpxueScJSfn4933nkHTz75pApWt9xyi5VfJRFZi4v0hLbaTyMiqgfSF2fJkiUYMWKErYtCRA6CfYCIiIjI6TAAERERkdNhHyAicnhsySei6mINEBERETkdBiAiIiJyOgxARERE5HQYgIiIiMjpMAARERGR02EAIiIiIqfDAEREREROhwGIiIiInA4DEBERETmd/wd92mnLI+zv7AAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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uj6PiYmx7Lw8iSb91q1by549e6w+FY9hf2/xvqs4HYbV/495/4mMHTtWvvvuO/nf//5nClXt9D2lw/1JSUlF9uf9dv52K43+wae8/f0WGBgoLVu2lC5dupjZdDpx4c0333SL9xoByIFfov4CFy9eXKQrVJ9r9x4uLDU11fw1pH8ZoXx0+Eb/MSj8vktOTjazwXjfOebIkSOmBsib339aL64f4joMsWTJEvP+Kkz/jQsICCjyftNhHK3d8+b324XarTTa66G8+f1WGv3czMzMdI/3WpWUWlcTs2bNMrNvPv74Y9v27dtto0aNskVGRtoSEhKsPjW39Nhjj9mWLl1q279/v+3nn3+29erVyxYVFWVmUOB3KSkptk2bNpmb/i85ZcoU8/jgwYPm9VdffdW8z7755hvb1q1bzcymZs2a2c6ePWvzZudrN33t8ccfN7NJ9P23aNEi26WXXmpr1aqVLSMjw+atxowZY6tZs6b5/zI+Pr7glp6eXrDP6NGjbY0bN7YtWbLEtn79eluPHj3MzZtdqN327Nlje/HFF0176ftN/19t3ry57eqrr7Z5s6eeesrMlNM20X+79LmPj49twYIFbvFeIwA56O233za/sMDAQDMtfvXq1VafktsaNGiQrX79+qatGjRoYJ7rPxQo6n//+5/5AC9+02nc9qnwzz//vC06OtoE8BtuuMG2c+dOm7c7X7vpB1OfPn1sdevWNVNtmzRpYhs5cqTX/7FSWnvpbcaMGQX7aLB+4IEHzHTl0NBQ2y233GI+7L3Zhdrt0KFDJuzUrl3b/D/asmVL25///GfbmTNnbN7s/vvvN//v6WeA/r+o/3bZw487vNd89D9V09cEAADgHqgBAgAAXocABAAAvA4BCAAAeB0CEAAA8DoEIAAA4HUIQAAAwOsQgAAAgNchAAFAOfj4+MjXX39t9WkAcBECEAC3d99995kAUvx24403Wn1qADyUv9UnAADloWFnxowZRbYFBQVZdj4APBs9QAA8goadmJiYIrdatWqZ17Q36L333pN+/fpJSEiING/eXL788ssiX//LL7/I9ddfb16vU6eOjBo1SlJTU4vsM336dGnfvr35XnoVb70CeGGJiYlyyy23SGhoqLRq1Uq+/fbbKvjJAVQGAhCAauH555+X2267TbZs2SJ33323DB48WH777TfzWlpamvTt29cEpnXr1smcOXNk0aJFRQKOBqgHH3zQBCMNSxpuWrZsWeR7TJo0Se68807ZunWr3HTTTeb7nDp1qsp/VgAuUGWXXQUAJ+kV3v38/GxhYWFFbi+//LJ5Xf8pGz16dJGv6d69u23MmDHm8QcffGCuOJ2amlrw+vfff2/z9fUtuEJ8bGys7dlnny3zHPR7PPfccwXP9Vi6bd68eS7/eQFUPmqAAHiE6667zvTSFFa7du2Cxz169Cjymj7fvHmzeaw9QZ06dZKwsLCC16+88krJy8uTnTt3miG0uLg4ueGGG857Dh07dix4rMeKiIiQ48ePV/hnA1D1CEAAPIIGjuJDUq6idUHlERAQUOS5BicNUQA8DzVAAKqF1atXl3h+0UUXmcd6r7VBWgtk9/PPP4uvr6+0adNGwsPDpWnTprJ48eIqP28A1qAHCIBHyMzMlISEhCLb/P39JSoqyjzWwuauXbtKz5495bPPPpO1a9fKRx99ZF7TYuWJEyfKsGHD5IUXXpATJ07IQw89JPfee69ER0ebfXT76NGjpV69emY2WUpKiglJuh+A6ocABMAjzJ8/30xNL0x7b3bs2FEwQ2vWrFnywAMPmP1mzpwp7dq1M6/ptPUff/xRxo0bJ5dddpl5rjPGpkyZUnAsDUcZGRnyxhtvyOOPP26C1e23317FPyWAquKjldBV9t0AoBJoLc7cuXNl4MCBVp8KAA9BDRAAAPA6BCAAAOB1qAEC4PEYyQfgKHqAAACA1yEAAQAAr0MAAgAAXocABAAAvA4BCAAAeB0CEAAA8DoEIAAA4HUIQAAAwOsQgAAAgNf5f6O0NDK5rlGhAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "batch_size = 32\n",
    "lr = 0.01\n",
    "loss_func = torch.nn.CrossEntropyLoss()\n",
    "epoch_num = 30\n",
    "\n",
    "train_iter, test_iter = make_minist_dataset()\n",
    "net = Forward_Net(28*28, 256, 10)\n",
    "\n",
    "train_loss, test_loss, test_acc = [], [], []\n",
    "for epoch in range(epoch_num):\n",
    "    train_loss_epoch = 0\n",
    "    for x, y in train_iter:\n",
    "        x = x.view(-1, 28*28)\n",
    "        pred = net(x)\n",
    "        # print(x.shape, x.view(-1, 28*28).shape, pred.shape, y.shape)\n",
    "        loss = loss_func(pred, y)\n",
    "        loss.backward()\n",
    "        sgd(net.params, lr, batch_size)\n",
    "        train_loss_epoch += loss.item()\n",
    "    train_loss.append(train_loss_epoch / len(train_iter))\n",
    "    test_loss.append(calc_net_loss(net, test_iter, loss_func))\n",
    "    test_acc.append(calc_net_acc(net, test_iter))\n",
    "    print(f\"Epoch {epoch+1}, Train Loss: {train_loss[-1]}, Test Loss: {test_loss[-1]}, Test Acc: {test_acc[-1]}\")\n",
    "\n",
    "# 损失曲线\n",
    "plt.plot(range(1, epoch_num+1), train_loss, label='Train Loss')\n",
    "plt.plot(range(1, epoch_num+1), test_loss, label='Test Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Training and Test Loss')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "# 测试准确率\n",
    "plt.plot(range(1, epoch_num+1), test_acc, label='Test Accuracy')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.title('Test Accuracy')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验结果分析：随着epoch增加，训练集和测试集上的loss逐渐降低，准确率逐渐提高，表明模型在解决多分类任务的训练过程中不断优化，并拥有了较好的泛化能力。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "dl",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
